{"version":3,"sources":["serviceWorker.js","translations/index.js","translations/i18n.js","globalStyles.js","interceptors.js","utils/ValidationError.js","config.js","providers/AuthProvider/authLogic.js","providers/AuthProvider/authProvider.js","providers/SocketProvider/socketLogic.js","providers/SocketProvider/socketProvider.js","providers/ResponsiveHandler/responsiveProvider.js","providers/ResponsiveHandler/withResponsive.js","icons/GatewayGreenIcon/index.js","icons/GatewayGrayIcon/index.js","icons/GatewayRedIcon/index.js","icons/GatewayYellowIcon/index.js","icons/RepeaterYellowIcon/index.js","icons/RepeaterGreenIcon/index.js","icons/RepeaterRedIcon/index.js","icons/RepeaterGrayIcon/index.js","icons/CarSensorYellowIcon/index.js","icons/CarSensorGreenIcon/index.js","icons/CarSensorRedIcon/index.js","icons/CarSensorGrayIcon/index.js","icons/GateSensorYellowIcon/index.js","icons/GateSensorGreenIcon/index.js","icons/GateSensorRedIcon/index.js","icons/GateSensorGrayIcon/index.js","icons/PanelYellowIcon/index.js","icons/PanelGreenIcon/index.js","icons/PanelRedIcon/index.js","icons/PanelGrayIcon/index.js","icons/ClusterIcon/index.js","icons/SpotInsideRedIcon/index.js","icons/SpotInsideGreenIcon/index.js","icons/SpotInsideGrayIcon/index.js","icons/SpotInsideYellowIcon/index.js","icons/VideoSensorYellowIcon/index.js","icons/VideoSensorGreenIcon/index.js","icons/VideoSensorRedIcon/index.js","icons/VideoSensorGrayIcon/index.js","components/StyledAccordion/index.js","components/MaskedInput/index.js","components/NumberInput/index.js","components/StyledInput/index.js","components/StyledAutoComplete/index.js","components/StyledTable/index.js","components/StyledPagination/index.js","containers/MapContainer/utils.js","containers/MapContainer/drawStyles.js","icons/InfoIcon/index.js","components/StyledSelect/index.js","containers/MapContainer/index.js","scenes/HomePage/logic.js","icons/ParkingIcon/index.js","icons/CarIcon/index.js","icons/DisabledIcon/index.js","icons/MotorhomeIcon/index.js","icons/InfraestruturasPortugalIcon/index.js","icons/NotAllowedIcon/index.js","scenes/HomePage/columns.js","scenes/HomePage/index.js","styled/TitleStyle/index.js","components/Container/index.js","components/StyledButton/index.js","containers/InputAndLabel/index.js","images/background_smart_parking.jpg","utils/validations.js","scenes/Login/logic.js","scenes/Login/index.js","icons/NotFoundIllustration/index.js","scenes/NotFound/index.js","components/StyledBreadCrumb/index.js","icons/SuccessIcon/index.js","icons/ErrorIcon/index.js","components/StyledToast/index.js","components/StyledSkeleton/index.js","components/AreasTemplate/index.js","components/StyledMobileTable/index.js","containers/AreaList/logic.js","icons/CloseIcon/index.js","components/StyledModal/index.js","containers/SelectAndLabel/index.js","containers/CreateNewAreaModal/styles.js","containers/CreateNewAreaModal/index.js","containers/AreaList/index.js","components/StyledDialog/index.js","containers/AreaDetails/logic.js","containers/AreaDetails/index.js","containers/FiltersModal/index.js","icons/UploadIcon/index.js","icons/FilterIcon/index.js","scenes/Areas/logic.js","scenes/Areas/columns.js","utils/options.js","utils/hasCRUDPermissions.js","scenes/Areas/index.js","components/StyledMenu/index.js","containers/HardwareList/logic.js","containers/HardwareList/utils.js","components/StyledRadio/index.js","components/StyledDotsStepper/index.js","containers/CreateNewAssetModal/styles.js","containers/CreateNewAssetModal/StepContent/InfoSensor.js","containers/CreateNewAssetModal/StepContent/SubmitSensor.js","containers/CreateNewAssetModal/StepContent/SubmitGateways.js","containers/CreateNewAssetModal/StepContent/SubmitPanels.js","containers/CreateNewAssetModal/StepContent/SubmitRepeater.js","containers/CreateNewAssetModal/index.js","scenes/Hardware/columns.js","components/HardwareTemplate/index.js","containers/HardwareList/index.js","utils/findMinStepError.js","containers/HardwareDetails/logic.js","containers/CreateNewSpotModal/index.js","containers/HardwareDetails/index.js","scenes/Hardware/logic.js","scenes/Hardware/index.js","scenes/Events/columns.js","scenes/Events/logic.js","utils/getModifiedEndDateMoment.js","components/ToggleFilter/index.js","components/EventsTemplate/index.js","components/StyledDateTime/index.js","containers/IntervalPicker/index.js","scenes/Events/index.js","hooks/useWindowSize.js","scenes/Spots/columns.js","scenes/Spots/logic.js","containers/SpotsList/logic.js","components/SpotsTemplate/index.js","containers/SpotsList/index.js","containers/SpotsDetails/logic.js","containers/SpotsDetails/index.js","scenes/Spots/index.js","icons/ServerErrorIllustration/index.js","scenes/ServerError/index.js","icons/BackArrowIcon/index.js","scenes/RecoverPassword/logic.js","scenes/RecoverPassword/index.js","components/FullPageLoading/index.js","scenes/Metrics/logic.js","scenes/Metrics/index.js","scenes/PasswordSet/logic.js","scenes/PasswordSet/index.js","utils/useQuery.js","icons/MobileIlustration/index.js","scenes/RedirectToMobile/index.js","routes.js","providers/AuthProvider/withAuthState.js","icons/PortugalIcon/index.js","icons/UKIcon/index.js","components/LanguageSwitch/index.js","components/HamburgerMenu/index.js","components/SidebarItem/index.js","icons/SpotsIcon/index.js","containers/Sidebar/utils.js","icons/MapIcon/index.js","icons/AreasIcon/index.js","icons/AssetsIcon/index.js","icons/MetricsIcon/index.js","icons/BrandIcon/index.js","icons/UserIcon/index.js","icons/LogoutIcon/index.js","containers/Navbar/index.js","containers/Sidebar/index.js","images/urbsense_logo.png","images/urbsense_black_logo.png","containers/Footer/index.js","images/ubiwhere_logo.png","components/PrivateRoute/index.js","containers/App/index.js","index.js"],"names":["Boolean","window","location","hostname","match","en","pt","Portuguese","i18n","use","initReactI18next","init","resources","Translations","lng","fallbackLng","interpolation","escapeValue","languageInterceptor","authorizationInterceptor","mediaQuery","query","literals","placeholders","css","Theme","tablet","min","smallDesktop","desktop","largeDesktop","media","materialTheme","createMuiTheme","typography","fontFamily","palette","primary","main","dark","secondary","createGlobalStyle","normalize","ValidationError","message","response","Error","getEnv","key","defaultValue","Object","prototype","hasOwnProperty","call","_env_","process","AUTOMATIC_EDIT_PERMISSIONS","VERSION","replace","BUILD_DATE","gateway","sensor","spot","repeater","panel","area","MAP_CENTER_LAT","MAP_CENTER_LONG","MAP_BOX_KEY","MAPCENTER","MAPZOOM","BASE_API_URL","BASE_MEDIA_URL","WS_BASE_URL","SIDEBAR_LOGO","UNAVAILABLE_FEATURES","split","MOBILE_DEEPLINK","NOMINATIM_OPTIONS","format","countrycodes","viewbox","bounded","AVAILABLE_SPOT_TYPES","decamelizeKeysTransformer","data","JSON","stringify","decamelizeKeys","setLanguageInterceptor","language","axios","interceptors","request","eject","config","headers","error","Promise","reject","setAuthorizationInterceptor","authToken","token","localStorage","getItem","Authorization","timeout","ms","resolve","setTimeout","setResponseInterceptor","history","checkUserAuthentication","serverError","a","async","status","baseURL","undefined","camelizeKeys","currentContentType","params","transformRequest","PROFILE_URL","REFRESHURL","logic","_token","accessToken","setItem","retrieveUser","get","isLoggedIn","this","checkUserAuth","payload","then","refreshToken","refresh","post","login","access","logout","clear","Context","React","createContext","AuthProvider","props","push","onLogin","catch","err","console","log","onLogout","setState","e","user","Routes","map","el","private","some","matchPath","pathname","path","state","isExact","prevProps","prevState","prevMatch","children","Provider","value","store","actions","Component","withRouter","createWebSocketConnection","setSocket","actualToken","socket","WebSocket","onopen","send","command","group","info","onerror","evt","onclose","SocketProvider","useContext","AuthContext","useState","setMessage","useRef","waiting","newSocket","current","connectToWSS","ws","onmessage","obj","parse","useEffect","ResponsiveHandler","recalculateDimensions","dimensions","isMobile","innerWidth","isDesktop","width","height","innerHeight","i","keys","length","addEventListener","removeEventListener","responsiveHandlers","withResponsive","ComposedComponent","Consumer","SvgComponent","viewBox","fill","xmlns","clipPath","y","rx","transform","x","stroke","strokeOpacity","d","filter","cx","cy","r","id","filterUnits","colorInterpolationFilters","floodOpacity","result","in","values","stdDeviation","in2","operator","fillRule","clipRule","xmlnsXlink","xlinkHref","fillOpacity","fontSize","fontWeight","fontStyle","letterSpacing","alignmentBaseline","style","lineHeight","xmlSpace","dominantBaseline","textAnchor","dx","dy","text","Wrapper","Title","summary","Body","details","styled","Accordion","AccordionSummary","AccordionDetails","forwardRef","ref","StyledMaskedInput","lazy","inputRef","onAccept","onChange","IMaskInput","isEditing","other","decimalScale","allowNegative","allowEmptyFormatting","getInputRef","onValueChange","target","name","floatValue","masked","InputLabelProps","fullWidth","number","helperText","MaskedInput","border","unmask","variant","size","InputProps","inputComponent","NumberInput","inputProps","isAllowed","max","TextField","t","useTranslation","freeSolo","selectOnFocus","clearOnBlur","handleHomeEndKeys","inputValue","onInputChange","options","getOptionLabel","event","newInputValue","loading","clearText","renderInput","StyledInput","label","renderOption","mapOptions","option","fallbackDisplay","displayName","display","address","road","street","village","locality","city","town","municipality","county","country","Grid","container","alignItems","item","marginRight","xs","StyledSpan","join","Typography","color","slice","Math","StyledAutoComplete","Autocomplete","span","memo","columns","defaultOrder","useLocation","order","setOrder","orderBy","setOrderBy","descendingComparator","useCallback","b","first","second","String","localeCompare","numeric","sensitivity","getComparator","handleRequestSort","property","stableSort","array","comparator","stabilizedThis","index","sort","renderCell","element","column","render","Table","StyledTableHead","StyledTableRow","StyledTableCell","icon","Tooltip","title","placement","arrow","TableSortLabel","active","direction","onClick","StyledTableBody","columnIndex","align","isEqual","TableRow","TableCell","TableHead","TableBody","Pagination","percentages","borderColor","getBorderColorsByOccupancy","occupancy","getColorsByOccupancy","getPolygonCenter","vertexes","lons","vertex","lats","styles","type","paint","layout","newButton","disabledOptions","tooltip","remain","StyledLabel","labelId","MenuProps","disableScrollLock","isediting","renderValue","selected","multiple","found","find","mappedOptions","StyledMenuItem","disabled","Array","isArray","includes","Checkbox","checked","indexOf","ListItemText","StyledToolTip","PopperProps","pointerEvents","InfoIconWrapper","preventDefault","stopPropagation","InfoIcon","generateOptions","StyledFormHelperText","FormControl","StyledSelect","Select","MenuItem","InputLabel","FormHelperText","div","Map","ReactMapboxGl","MapContainer","onRefChange","drawControl","drawReady","flyToCoordinates","geometry","openPopup","coordinates","boundsMapped","legendOpen","popupOpen","newBounds","coordinatesToBounds","newBoundsMapped","mapBoundsToArray","popupType","start","mapboxgl","LngLatBounds","reduce","acum","bounds","extend","boundsObject","_sw","lat","_ne","generatePopup","device","occupied","bg","verboseOccupation","getColorsByStatus","PopupWrapper","PopupTitleWrapper","backgroundColor","PopupTitle","deviceType","StyledLink","to","PopupSubTitle","uid","PopupBodyWrapper","PopupBodyLine","PopupBodyValue","PopupBodyLabel","spotType","monitoringType","lastSeen","moment","lastCommunication","generateLegends","hideLegends","hideListLegend","alarms","alarmsCount","pagination","changePagination","alarmsColumns","timestamp","timestampOptions","timestampChange","reduced","sortedColumns","mapLegends","dashboardOpen","Fragment","InfoWrapper","InfoTitle","InfoLine","ColorSquare","InfoText","sortedAlarmsColumns","sortedTimestampOptions","AreasAlarmsWrapper","DashboardWrapper","StyledAccordion","expanded","isExpanded","AreaLegendTitle","AreaLegendTitleText","Badge","DashboardBodyWrapper","DashboardFilterLine","TotalAreasText","StyledPagination","count","ceil","limit","page","AreasLegendWrapper","occupiedSpots","totalSpots","AreasBodyWrapper","TotalAreasLine","clusterMarker","cursor","zIndex","anchor","tabIndex","ClusterIcon","mapThroughData","startingBounds","polygons","forEach","coords","polyIndex","points","capacity","isNaN","occupation","all","lines","showSpots","spotsArray","SpotInsideRedIcon","SpotInsideGreenIcon","SpotInsideYellowIcon","showSensors","sensorsArray","SpotInsideGrayIcon","generateLayers","isDrawAvailable","inDetail","currentZoom","mapLayers","assetHeight","assetWidth","features","onMouseEnter","_mapRef","getCanvas","onMouseLeave","originalEvent","lineLayout","spots","sensors","cluster","ClusterMarkerFactory","pointCount","getLeaves","zoomOnClick","radius","isPanelMonitoringEquipment","CarSensorGreenIcon","CarSensorRedIcon","CarSensorYellowIcon","CarSensorGrayIcon","GateSensorGreenIcon","GateSensorRedIcon","GateSensorYellowIcon","GateSensorGrayIcon","VideoSensorGreenIcon","VideoSensorRedIcon","VideoSensorYellowIcon","VideoSensorGrayIcon","GatewayGreenIcon","GatewayRedIcon","GatewayYellowIcon","GatewayGrayIcon","PanelGreenIcon","PanelRedIcon","PanelYellowIcon","PanelGrayIcon","RepeaterGreenIcon","RepeaterRedIcon","RepeaterYellowIcon","RepeaterGrayIcon","handleDrawCreate","setGeometry","featuresDrawn","draw","getAll","delete","handleDrawUpdate","handleDelete","handleMapClick","defaultPrevented","getControls","point","line_string","polygon","trash","combine_features","uncombine_features","getPopupPosition","center","zoom","canFly","createRef","add","flyToLocation","enableSearch","filters","hidePopups","controls","containerStyle","fitBounds","fitBoundsOptions","padding","onStyleLoad","onZoom","getZoom","renderChildrenInPortal","position","displayControlsDefault","onDrawCreate","onDrawUpdate","onDrawDelete","offset","centroid","search","SearchWrapper","withTranslation","h5","p","Link","AREAS_URL","DETAILS_URL","ALARMS_FILTERED_URL","getAreas","getAlarmsFiltered","date","getAreaDetails","getOccupiedValues","dashboardColumns","updatedAt","parkingId","description","Description","AreaLineWrapper","StatusWrapper","ParkingIcon","CarIcon","normal","DisabledIcon","handicapped","MotorhomeIcon","motorhome","InfraestruturasPortugalIcon","cp","NotAllowedIcon","forbiddenTransitCount30Min","wsStore","SocketContext","areas","areaState","setAreaState","alarmsState","setAlarmsState","setPagination","fetchAreas","results","fetchAlarmsFiltered","TIMESTAMP_TIME","Date","setHours","setMinutes","getHours","getMinutes","toLocaleString","convertTimeToLocal","prev","fetchAreaAndUpdate","areasCopy","findIndex","changeTimestamp","newTimestamp","handleWSMessages","msg","sender","content","theme","margin","marginBottom","flexgrow","button","aria-label","Button","Label","shrink","StyledError","checkValidation","form","validations","clone","invalid","validationList","valid","check","isRequired","LOGIN_URL","VALIDATIONS","username","Check","password","defaultValues","setForm","validation","mapValues","Login","hasSubmitted","submitting","submitState","setSubmitState","memoSetForm","handleSubmit","handleChange","memoHandleChangeValue","Overlay","BackgroundImage","src","Background","alt","left","top","objectFit","opacity","Container","StyledForm","onSubmit","InputWrapper","autoComplete","ErrorText","ButtonWrapper","StyledButton","ForgotPassword","img","h1","TitleStyle","ry","strokeMiterlimit","ContentWrapper","Message","BackButton","separator","items","Breadcrumbs","toast","success","StyledMessage","SuccessIcon","closeButton","className","ErrorIcon","animation","Skeleton","marginTop","setInDetail","Name","Occupancy","currentOccupation","Uid","Value","Template","template","NEWAREA_URL","capacityMargin","gateways","submitNewArea","fetchLocationOptions","NOMINATIM_BASE_URL","Fade","open","ModalWrapper","CloseWrapper","onClose","CloseIcon","Modal","NewAreaWrapper","SameLineInputs","NewAreaMapAndLabel","NewAreaMapWrapper","ModalTitle","h2","NewAreaMapHelperText","NewAreaButtonWrapper","Blank","handleClose","checkIfError","monitoringTypeOptions","textInput","setTextInput","searchOptions","locationSelected","setLocationSelected","helperTextGenerator","apiError","memoHandleChange","onSearchChange","onSearchInputChange","newValue","mapSearchProps","useMemo","boundingbox","StyledModal","maxLength","minLength","mask","areasCount","setAreaInDetail","setOpen","setTitle","triggerSet","apiResponse","setSeachOptions","searchInputTimeoutRef","clearTimeout","q","reset","handlePaginationChange","memoizedItems","memoizedColumns","memoizedLoadingTable","AreasTemplate","aria-labelledby","aria-describedby","maxWidth","DialogTitle","body","DialogContent","DialogContentText","DialogActions","cancelText","submitType","submitText","Dialog","SENSORSWITHOUTAREA_URL","GATEWAYSWITHOUTAREA_URL","getSensorsAndGateways","updateAreaDetails","put","deleteArea","keysToMapArrays","useParams","areaInDetail","setIsEditing","setMapHelperText","canEdit","fetchedArea","setFetchedArea","resetParent","hasCRUDPermission","update","fetchedSensorsGateways","setFetchedSensorsGateways","canDelete","setCanDelete","automaticGateways","setAutomaticGateways","confirmDeleteOpen","setConfirmDeleteOpen","handleClickOpen","Number","mode","defaultKeys","sensorsResults","gatewayResults","handleSensorsChange","foundSensors","cleanedGateways","gatewaysToCheck","mergedGateways","concat","uniqueGateways","pos","MapHelperText","finally","memoSensors","memoGateways","handleBack","setEditingTrue","setEditingFalse","DetailsWrapper","ActionsWrapper","BlankSpace","StyledDialog","InputsWrapper","inputs","ButtonsWrapper","buttons","SEARCH_URL","CSV_URL","fetchAreasOptions","uploadCSV","typeOptions","countingTypeOptions","statusOptions","allowedOptions","monitoringOptions","gatewaysTypeOptions","intervalOptions","occupiedSearchOptions","occupationOptions","groups","useRouteMatch","useHistory","setLoading","monitoring_type","setFilters","setTriggerSet","nameInputTimeoutRef","uidInputTimeoutRef","setUpdate","mapHelperText","locationInputTimeoutRef","locationOptions","setLocationOptions","locationTextInput","setLocationTextInput","hiddenFileInput","openFilters","setOpenFilters","onFilterChange","handleAutocompleteInputs","handleSetAreaInDetail","resetFilters","handleClick","click","files","fileUploaded","formData","FormData","append","hasCRUDPermissions","memoMonitoringOptions","memoHandleAutocompleteInputs","memoHandleAutocompleteInputsValue","memoOnFilterChange","memoFilterMonitoringOptions","memoOccupationOptions","filtersInputs","handleResetFilters","applyFilters","filtersButtons","resetAreaInDetail","breadcrumbItems","openNewPopup","mapData","memoSetTriggerSet","onCloseFilters","onOpenFilters","BreadCrumbRow","StyledBreadCrumb","UploadIcon","accept","invisible","FilterIcon","FiltersWrapper","FiltersRow","MapAndTextWrapper","MapWrapper","exact","AreaList","keepMounted","Menu","NEWASSET_URL","types","STEP_VALIDATIONS","info_sensor","factoryUid","magnetometerThreshold","submit_sensor","distanceThreshold","allowed","softwareVersion","submit_gateways","submit_panels","submit_repeater","lastValue","submitNewHardware","validateStepForm","step","stepsByType","component","FormLabel","RadioGroup","FormControlLabel","control","Radio","errorMessage","MobileStepper","ModalSubTitle","h4","MapAndLabel","filteredGateways","memoAreasOptions","memoFilteredGateways","memoAllowedOptions","memoGatewaysTypeOptions","setType","handleBackButton","handleNextButton","setActive","steps","setFilteredGateways","memoSetType","filterGatewaysWithArea","areaFound","gatewaysInArea","gw","gwFound","getStepContent","StyledRadio","StyledDotsStepper","activeStep","backButton","nextButton","mapStatusToColors","setHardwareInDetail","joined","StatusWithColor","hardware","hardwareCount","fetchedAreas","fetchedGateways","setSteps","setError","errorStep","minStepError","errorKeys","validationKeys","errKey","findMinStepError","memoizedTypes","HardwareTemplate","AVAIALABLESENSORS_URL","AVAIALABLESPOTS_URL","typesUrls","keysToId","networkKey","spotDefaultValues","getHardwareDetails","typeIndex","typeUrl","fetchAvailableSensors","fetchAvailableSpots","updateHardwareDetails","deleteHardware","submitNewSpot","spotTypeOptions","fetchedSensors","addressdetails","memoSpotTypeOptions","memoSensorsOptions","NewSpotWrapper","NewSensorMapAndLabel","NewSensorMapWrapper","NewSensorMapHelperText","NewSensorButtonWrapper","hardwareInDetail","fetchedHardware","setFetchedHardware","availableSensors","setAvailableSensors","availableSpots","setAvailableSpots","spotsOpen","setSpotsOpen","newSpotState","setNewSpotState","newSpotOpen","setNewSpotOpen","newSpotForm","setNewSpotForm","handleNewSpotChange","handleNewSpotSubmit","changedForm","numberOfInputs","memoHandleChangeArray","memoHandleChangeEmptyString","memoNewButton","NewButtonWrapper","memoCountingTypeOptions","memoFetchedAreas","memoFetchedAreasMultiple","memoAvailableSpots","memoAvailableSensors","startEditing","cancelEditing","goBack","onOpen","HARDWARE_URL","AREAS_SEARCH_URL","ASSETS_SEARCH_URL","GATEWAYS_URL","SENSOR_CSV_URL","GW_CSV_URL","PANEL_CSV_ULR","getHardware","fetchAssetsOptions","fetchAreasAndGateways","finalUrl","fetchedAreasAndGateways","setfetchedAreasAndGateways","hardwareState","setHardwareState","memoColumns","memoData","defaultFilter","counting_type","menuAnchorEl","setMenuAnchorEl","uploadType","setUploadType","uidTextInputTimeoutRef","nameTextInputTimeoutRef","areaTextInputTimeoutRef","handleSetHardwareInDetail","areasResults","fetchHardware","fetchHardwareAndUpdate","urlType","hardwareCopy","asset","handleMenuOpen","currentTarget","handleMenuClose","handleMenuClick","clickType","memoStatusOptions","memoTypeOptions","memoOnFilterChangeValue","handleReset","handleApply","removeHardwareInDetail","breadCrumbItems","downloadTypeOptions","StyledMenu","anchorEl","HardwareDetails","createdAt","EVENTS_URL","getEvents","getEventDetails","getModifiedEndDateMoment","interval","startDate","endDate","endOf","isSameOrBefore","AnimatedArrow","AnimatedArrowWrapper","ToggleFilter","handleClickOutside","wrapperRef","contains","oldProps","variableToWatch","document","ToggleButtonWrapper","ToggleText","ReferenceWrapper","DynamicWrapper","maxHeight","unknownSpots","MobileWrapper","MobileInputCalendarView","MobileCalendarPick","locale","Datetime","white","input","getModifiedEndDate","getModifiedStartDate","modifiedStartDate","startOf","replaceForm","ColumnFlexer","TimeOptionsWrapper","OptionSpan","dateBefore","dateAfter","end","onChangeFunction","changeBoth","tempFormat","viewMode","isValidDate","currentDate","selectedDate","dateFormat","timeFormat","isBefore","isSameOrAfter","datePicker","area__monitoringType","windowSize","setWindowSize","handleResize","useWindowSize","convertRemToPixels","rem","parseFloat","getComputedStyle","getElementById","eventsCount","events","eventsState","setEventsState","wrapperHeight","offsetHeight","floor","fetchEvents","handleReplaceForm","handleResetForm","IntervalPicker","changeForm","resetForm","defaultForm","EventsTemplate","setSpotInDetail","SPOTS_URL","AREASEARCH_URL","SENSORSEARCH_URL","SPOTSSEARCH_URL","getSpots","fetchSensorsOptions","fetchUidOptions","getSpotDetails","NEWSPOT_URL","AVAILABLESENSORS_URL","spotsCount","setHasSubmitted","setSubmitting","setApiResponse","setFetchedSensors","SpotsTemplate","updateSpotDetails","deleteSpot","spotInDetail","fetchedSpot","setFetchedSpot","memoFetchedSensors","spotsState","setSpotsState","sensorTextInputTimeoutRef","handleSetSpotInDetail","fetchSpotAndUpdate","spotsCopy","fetchSpots","spotTypeSearchOptions","memoOccupiedSearchOptions","RECOVER_URL","email","test","recover","SuccessWrapper","GoBackLink","TitleWrapper","IconWrapper","BackArrowIcon","SuccessMessage","CircularProgress","METRICS_URL","SUPERSET_URL","getSuperset","triggerReportGeneration","downloadFile","fileUrl","create","responseType","url","URL","createObjectURL","Blob","link","createElement","href","setAttribute","appendChild","removeChild","getUserInfo","Metrics","isTokenGood","superSetData","setSuperSetData","fetchTokenStatus","hadError","res","clearInterval","setInterval","removeLoading","FullPageLoading","borderWidth","baseUrl","relativeUrl","onLoad","SET_PASSWORD_URL","passwordConfirm","setPassword","confirmPassword","passwordValidation","AccountSuccess","URLSearchParams","buildBody","data-name","RedirectToMobile","currentURL","MobileIlustration","crumb","HomePage","Areas","Hardware","Events","Spots","ServerError","ServerErrorIllustration","RecoverPassword","ActivateAccountMobile","PasswordSetMobile","PasswordSet","notfound","NotFoundIllustration","toArray","withAuthState","strokeWidth","strokeLinecap","isVisible","setIsVisible","onPtFlagClick","changeLanguage","onEnFlagClick","overflow","PortugalIcon","UKIcon","BackgroundOverlay","isOpen","Switch","SwitchContent","SwitchButton","inactiveColor","isActive","HamburgerBox","HamburgerInner","Icon","SECTIONS","CustomContainer","BrandWrapper","Brand","BrandIcon","RightSide","LanguageSwitch","AccountWrapper","Username","UserIcon","ProfileMenuWrapper","ProfileMenu","MenuLabel","LogoutIcon","HamburgerWrapper","HamburgerMenu","MobileMenu","route","SidebarItem","StyledBottomItemsWrapper","variants","withTheme","setIsOpen","useSpring","handleEnter","handleLeave","SidebarWrapper","native","rel","StyledImage","animated","ImageLogo","UrbsenseLogo","redirectTo","rest","hot","Main","Navbar","SceneWrapper","PrivateRoute","Footer","pauseOnFocusLoss","hideProgressBar","ReactDOM","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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AIlB,CACExL,GAAI,2BACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,QACA,cAEF,CACE,KACA,SACA,SAGJ6L,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfD,MAAO,CACL,aAAc,UACd,iBAAkB,CAChB,GACA,GAEF,aAAc,IAIlB,CACExL,GAAI,uDACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,OACA,UAEF,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,SAIpB,CACExL,GAAI,gDACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,OACA,UAEF,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAIpB,CACExL,GAAI,2CACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,SAEF,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,WAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,gBAAiB,EACjB,iBAAkB,EAClB,eAAgB,SAIpB,CACExL,GAAI,8BACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,SAEF,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,WAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAIpB,CACExL,GAAI,mCACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,QACA,SAEF,CACE,KACA,SACA,QAEF,CACE,KACA,OACA,aAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,SAIpB,CACExL,GAAI,4BACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,YAEF,CACE,KACA,SACA,SAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAIpB,CACExL,GAAI,mCACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,OACA,UAEF,CACE,KACA,QACA,YAGJ4L,MAAO,CACL,aAAc,UACd,qBAAsB,UACtB,eAAgB,KAIpB,CACExL,GAAI,qCACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,OACA,UAEF,CACE,KACA,QACA,YAGJ6L,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfD,MAAO,CACL,aAAc,UACd,aAAc,IAIlB,CACExL,GAAI,2BACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,OACA,UAEF,CACE,KACA,QACA,eAGJ6L,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfD,MAAO,CACL,aAAc,UACd,aAAc,IAIlB,CACExL,GAAI,4BACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,OACA,UAEF,CACE,KACA,QACA,UAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAIpB,CACExL,GAAI,oCACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,SAEF,CACE,KACA,QACA,WAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,aAAc,UACd,qBAAsB,UACtB,eAAgB,KAIpB,CACExL,GAAI,kCACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,QAEF,CACE,KACA,QACA,YAGJ4L,MAAO,CACL,aAAc,UACd,qBAAsB,UACtB,eAAgB,KAIpB,CACExL,GAAI,+BACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,aAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAIpB,CACExL,GAAI,sCACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,SAEF,CACE,KACA,QACA,WAEF,CACE,KACA,OACA,WAGJ6L,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfD,MAAO,CACL,aAAc,UACd,aAAc,IAIlB,CACExL,GAAI,oCACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,QAEF,CACE,KACA,QACA,YAGJ6L,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfD,MAAO,CACL,aAAc,UACd,iBAAkB,CAChB,GACA,GAEF,aAAc,IAIlB,CACExL,GAAI,4BACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,SAEF,CACE,KACA,QACA,cAEF,CACE,KACA,OACA,WAGJ6L,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfD,MAAO,CACL,aAAc,UACd,aAAc,IAIlB,CACExL,GAAI,0BACJuL,KAAM,OACN3L,OAAQ,CACN,MACA,CACE,KACA,QACA,cAEF,CACE,KACA,SACA,SAGJ6L,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfD,MAAO,CACL,aAAc,UACd,iBAAkB,CAChB,GACA,GAEF,aAAc,IAIlB,CACExL,GAAI,sDACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,OACA,UAEF,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,SAIpB,CACExL,GAAI,+CACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,OACA,UAEF,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAIpB,CACExL,GAAI,0CACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,SAEF,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,WAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,gBAAiB,EACjB,iBAAkB,EAClB,eAAgB,SAIpB,CACExL,GAAI,6BACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,SACA,SAEF,CACE,KACA,QACA,SAEF,CACE,KACA,OACA,WAEF,CACE,KACA,OACA,WAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAIpB,CACExL,GAAI,kCACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,QACA,SAEF,CACE,KACA,SACA,QAEF,CACE,KACA,OACA,aAGJ4L,MAAO,CACL,gBAAiB,EACjB,eAAgB,SAIpB,CACExL,GAAI,2BACJuL,KAAM,SACN3L,OAAQ,CACN,MACA,CACE,KACA,QACA,SAEF,CA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AiB7rB,uBAAY,WACjC,OAAQqrB,EAAMtpB,IACZ,IAAK,OACH,OACE,oCACE,kBAAC+pB,GAAD,CACEvuB,MAAM,GACNnC,KAAMmB,EAAE,eACR3I,MAAO0P,EACP5I,SAAU6wB,EACVxuB,QAASynB,EACTx1B,MAAOA,EACPu7B,aAAcv7B,EAAQuN,EAAE,mBAAqB,GAP/C,gEAWN,IAAK,cACH,OAAY,MAARub,EAEA,kBAAC,GAAD,cACM,CACFA,OACAkB,eACAmF,mBACAH,YACAE,gBACA5E,eACAwE,eACAO,sBACAJ,eACAG,sBACAO,kBAZJ,iEAiBJyM,EAAU,GACH,MACT,IAAK,gBACH,OAAY,MAARtT,EAEA,kBAAC,GAAD,cACM,CACFA,OACAtC,QACAoP,oBACAgG,mBACAjG,iBACA3L,eACAM,eACAwE,eACAO,sBACAM,kBAXJ,mEAgBJyM,EAAU,GACH,MACT,IAAK,kBACH,OAAY,MAARtT,EAEA,kBAAC,GAAD,cACM,CACFA,OACAkB,eACAmF,mBACAH,YACAE,gBACA1I,QACAqP,sBACAvL,eACAwE,eACAO,sBACAJ,eACAG,sBACAO,kBAdJ,qEAmBJyM,EAAU,GACH,MACT,IAAK,gBACH,OAAY,MAARtT,EAEA,kBAAC,GAAD,cACM,CACFA,OACAkB,eACAmF,mBACAH,YACAE,gBACA1I,QACA8D,eACAwE,eACAO,sBACAJ,eACAG,sBACAO,kBAbJ,mEAkBJyM,EAAU,GACH,MACT,IAAK,kBACH,OAAY,MAARtT,EAEA,kBAAC,GAAD,cACM,CACFA,OACAkB,eACAmF,mBACAH,YACAE,gBACA1I,QACA8D,eACAwE,eACAO,sBACAJ,eACAG,sBACAO,kBAbJ,qEAkBJyM,EAAU,GACH,MACT,QAEE,OADAA,EAAU,GACH,QAEV,CACDrpB,EACA4iB,EACAnP,EACAsI,EACA9uB,EACA47B,EACA9S,EACA+M,EACAvL,EACAN,EACAqF,EACAF,EACAQ,EACA4M,EACA3G,EACA1G,EACAkN,EACAC,EACA9uB,EACAyhB,EACA1a,EACAkhB,IAGF,OACE,kBAAC1F,GAAD,CAAahC,KAAMA,EAAMG,QAASA,EAAlC,8DACE,kBAAC,GAAD,2DACE,kBAAC,GAAD,8DAAa1gB,EAAE,eACf,kBAACkuB,GAAD,iEACW,MAARnnB,GAA2B,IAAXvB,EAAexF,EAAE,cAAD,OAAe+G,IAAU,IAE3DuoB,IACD,kBAACE,GAAD,CACEV,MAAOA,EAAM70B,OACbw1B,WAAYjqB,EACZkqB,WACE,kBAACzR,GAAD,CACE/V,SAAqB,IAAX1C,GAAgBkX,EAC1BhX,QAASipB,EAFX,+DAIG3uB,EAAE,oBAGP2vB,WACE,kBAAC1R,GAAD,CACEvY,QAASkpB,EACT7nB,KAAK,UACLmB,SAAUwU,EAHZ,+DAKGlX,EAASspB,EAAM70B,OAAS,GAAgB,IAAXuL,EAC1BxF,EAAE,eACFA,EAAE,kBAnBZ,yEA4BiC8F,MC1X5B8pB,GAAoB,SAAAh8B,GAC/B,OAAQA,GACN,IAAK,KACH,MAAO,uBACT,IAAK,SACH,MAAO,qBACT,IAAK,UACH,MAAO,uBACT,QACE,MAAO,yBA+EEqP,GA3EC,CACd,CACEzT,IAAK,MACLwR,MAAO,YACP6D,OAAQ,gBAAGgrB,EAAH,EAAGA,oBAA2BlrB,GAA9B,EAAwB3E,EAAxB,mDACN,kBAAC,GAAD,CAAY0F,QAAS,kBAAMmqB,EAAoBlrB,IAA/C,gDACGA,EAAQ0H,OAIf,CACE7c,IAAK,OACLwR,MAAO,cAGT,CACExR,IAAK,aACLwR,MAAO,oBACP6D,OAAQ,gBAAG7E,EAAH,EAAGA,EAAM2E,EAAT,4BAAuB3E,EAAE,SAAD,OAAU2E,EAAQsH,eAcpD,CACEzc,IAAK,OACLwR,MAAO,aACP6D,OAAQ,SAAAF,GACN,GAAqB,OAAV,OAAPA,QAAO,IAAPA,OAAA,EAAAA,EAASlU,OAAgB0X,MAAMC,QAAN,OAAczD,QAAd,IAAcA,OAAd,EAAcA,EAASlU,MAAO,CAAC,IAAD,IACnDq/B,EAAM,OAAGnrB,QAAH,IAAGA,GAAH,UAAGA,EAASlU,YAAZ,iBAAG,EAAe8F,KAAI,SAAAC,GAAE,OAAIA,EAAGqI,eAA/B,aAAG,EAAmC2D,KAAK,MACvD,OAAO,0BAAM4C,MAAO0qB,EAAb,0CAAsBA,GACvB,IAAD,EACL,cAAOnrB,QAAP,IAAOA,GAAP,UAAOA,EAASlU,YAAhB,aAAO,EAAeoO,OAI5B,CACErP,IAAK,SACLwR,MAAO,eACP6D,OAAQ,gBAAG7E,EAAH,EAAGA,EAAM2E,EAAT,4BACN,kBAACorB,GAAD,CACErtB,MAAOktB,GACa,MAAlBjrB,EAAQ/Q,YACeE,IAAnB6Q,EAAQ/Q,OACN+Q,EAAQ/Q,OACR,GACF,WANR,qDASqB,MAAlB+Q,EAAQ/Q,YACcE,IAAnB6Q,EAAQ/Q,OACNoM,EAAE,SAAD,OAAU2E,EAAQ/Q,SACnB,IACFoM,EAAE,oBAIZ,CACExQ,IAAK,WACLwR,MAAO,2BACP6D,OAAQ,SAAAF,GAAO,OACbA,EAAQiI,SACJC,KAAOlI,EAAQiI,UAAUrb,OxG1DJ,oBwG2DrB,OAMJw+B,GAAkBtyB,UAAO0Z,EAAV,+EAAG1Z,CAAH,0EAIV,qBAAGiF,OAAqB,wBAG7BwJ,GAAazO,UAAOsF,KAAV,0EAAGtF,CAAH,mFC9FD,eAA4B,EAAzBtG,SAA0B,IAAbxB,EAAY,4BACjCgP,EAAyBhP,EAAzBgP,QAAS6a,EAAgB7pB,EAAhB6pB,YACTxf,EAAMC,cAAND,EACR,OACE,kBAAC,GAAD,CAAS0F,QAAS,kBAAM8Z,EAAY7a,IAApC,uDACE,kBAAC,GAAD,qDACG3E,EAAE,SAAD,OAAU2E,EAAQsH,aAAe,IACZ,MAAtBtH,EAAQsH,YAA6C,UAAvBtH,EAAQsH,WACT,MAA1BtH,EAAQgI,gBAAR,aACM3M,EAAE,SAAD,OAAU2E,EAAQgI,kBACzB,IAEN,yEACA,kBAAC,GAAD,oDAAMhI,EAAQ0H,KAEd,kBAAC,GAAD,CACE3J,MAAOktB,GACa,MAAlBjrB,EAAQ/Q,OAAiB+Q,EAAQ/Q,OAAS,WAF9C,+DAKqB,MAAlB+Q,EAAQ/Q,OACLoM,EAAE,SAAD,OAAU2E,EAAQ/Q,SACnBoM,EAAE,kBAER,kBAAC,GAAD,sDAAQA,EAAE,eACV,kBAAC,GAAD,sDACmB,MAAhB2E,EAAQlU,MAAqC,MAArBkU,EAAQlU,KAAKoO,KAClC8F,EAAQlU,KAAKoO,KACb,KAEN,kBAAC,GAAD,sDAAQmB,EAAE,6BACV,kBAAC,GAAD,sDACuB,MAApB2E,EAAQiI,SACLC,KAAOlI,EAAQiI,UAAUrb,OzGXN,oByGYnB,OAKN6L,GAAUK,UAAOgM,IAAV,4EAAGhM,CAAH,qSAiBPsyB,GAAkBtyB,UAAO0Z,EAAV,oFAAG1Z,CAAH,wHAKV,qBAAGiF,OAAqB,wBAM7Bkd,GAAMniB,UAAO0Z,EAAV,wEAAG1Z,CAAH,iJAWHgiB,GAAOhiB,UAAO2gB,GAAV,yEAAG3gB,CAAH,iFAOJ0d,GAAQ1d,UAAO0Z,EAAV,0EAAG1Z,CAAH,yCAKLoiB,GAAQpiB,UAAO0Z,EAAV,0EAAG1Z,CAAH,4EC4NIuF,kBAAK3I,IAlSC,SAAC,GAA2B,EAAzBlD,SAA0B,IAAbxB,EAAY,4BACvC4B,EAAYiB,qBAAWC,IAAvBlB,QAGNqJ,EAiBEjL,EAjBFiL,QACAovB,EAgBEr6B,EAhBFq6B,SACAC,EAeEt6B,EAfFs6B,cACAhtB,EAcEtN,EAdFsN,QACAolB,EAaE1yB,EAbF0yB,kBACAwH,EAYEl6B,EAZFk6B,oBACAtP,EAWE5qB,EAXF4qB,KACAsC,EAUEltB,EAVFktB,QACAuF,EASEzyB,EATFyyB,eACA8H,EAQEv6B,EARFu6B,aACAC,EAOEx6B,EAPFw6B,gBACArN,EAMEntB,EANFmtB,SACA1V,EAKEzX,EALFyX,WACAkM,EAIE3jB,EAJF2jB,cACAyJ,EAGEptB,EAHFotB,WACAuF,EAEE3yB,EAFF2yB,oBACAluB,EACEzE,EADFyE,mBAGM4F,EAAMC,cAAND,EAvBuC,EAyBvBtH,mBAAS,MAzBc,mBAyBxC6iB,EAzBwC,KAyBlCc,EAzBkC,OA2BvB3jB,mBAAS,MA3Bc,mBA2BxCqO,EA3BwC,KA2BlC2nB,EA3BkC,OA6BTh2B,mBAAS,CAC7C+jB,cAAc,EACdC,YAAY,EACZsG,YAAa,OAhCgC,mBA6BxCrG,EA7BwC,KA6B3BC,EA7B2B,OAmCnBlkB,mBAAS,GAnCU,mBAmCxC8M,EAnCwC,KAmChCqpB,EAnCgC,OAoCrBn2B,mBAAS,CAAC,SApCW,mBAoCxCo2B,EApCwC,KAoCjCsB,EApCiC,OAqCrB13B,mBAAS,MArCY,mBAqCxCjG,EArCwC,KAqCjC49B,EArCiC,KAuCzChN,EAAQ5f,uBAAY,WACxB4Y,EAAQ,MACRO,EAAe,CACbH,cAAc,EACdC,YAAY,EACZsG,YAAa,SAEd,IAEG1B,EAAc7d,uBAAY,WAC9BirB,EAAQ,MACR7L,GAAQ,GACRQ,MACC,CAACA,EAAOR,EAAS6L,IAEd5R,EAAerZ,uBAAY,WAC/BmZ,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBF,cAAc,EACdC,YAAY,OAEdroB,GACGi5B,kBAAkBvmB,EAAMwU,GAAM,SAAAA,GAAI,OAAIc,EAAQ,eAAKd,OACnDxmB,MAAK,SAAA1F,GACJutB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,OAEVrtB,EAASwC,OACXyvB,IACAyB,IACAjE,GAAc9e,EAAE,8BAGnBlK,OAAM,SAAAC,GAQL,GAPAC,QAAQC,IAAI,CAAEF,QACd+oB,GAAY9e,EAAE,wBACd4c,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,OAGH,MAAP3mB,GAA+B,MAAhBA,EAAI1G,SACrBkI,EAAQ9D,mBAER,GAAyB,MAArBsC,EAAI1G,SAASwC,KAAc,CAC7B+qB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,EACZsG,YAAajtB,EAAI1G,SAASwC,UAE5B,IAAMy+B,ECtHH,SAACvO,EAAUvG,EAAazU,GACrC,GACU,MAARA,GACY,MAAZgb,GACe,MAAfvG,GACqB,MAArBA,EAAYzU,GACZ,CAIA,IAHA,IAAM+nB,EAAQp/B,OAAOsK,KAAKwhB,EAAYzU,IAClCwpB,EAAezB,EAAM70B,OAAS,EAC5Bu2B,EAAY9gC,OAAOsK,KAAK+nB,GACrBhoB,EAAI+0B,EAAM70B,OAAS,EAAGF,GAAK,EAAGA,IACF,MAA/ByhB,EAAYzU,GAAM+nB,EAAM/0B,KAAc,WACxC,IAAM02B,EAAiB/gC,OAAOsK,KAAKwhB,EAAYzU,GAAM+nB,EAAM/0B,KAE7Cy2B,EAAU95B,MAAK,SAAAg6B,GAC3B,OAAOD,EAAepoB,SAASqoB,QAG/BH,EAAex2B,GAPuB,GAW5C,OAAOw2B,EAET,OAAO,KD8FqBI,CAChB56B,EAAI1G,SAASwC,KACb66B,GACA3lB,GAEe,MAAbupB,GACFzB,EAAUyB,EAAY,QAGxB1T,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,YAKrB,CAACnB,EAAMxU,EAAMxP,EAAS+pB,EAAathB,EAAG+iB,IAEnC4L,GAAmBlrB,uBAAY,WACnCorB,EAAUrpB,EAAS,KAClB,CAACA,IAEJnM,qBAAU,WACRw2B,EAAoB,MACpBxM,IACAP,EAAS,yBAER,IAEH,IAAM8L,GAAmBnrB,uBAAY,WACnC,GAAY,MAARsD,GAA+B,MAAf0mB,GAAqB,CACvC,GAAe,IAAXjoB,EAGF,OAFA4qB,EAAS3C,GAAY1mB,SACrB8nB,EAAUrpB,EAAS,GAGrBoX,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBF,cAAc,OAGhB,IAAM3U,EAAQgnB,EAAM/mB,MAAK,SAAAvR,GAAE,OAAIA,EAAG6R,SAAS,aAC3C,GAAa,MAATP,GAAiBtC,IAAWspB,EAAMtmB,QAAQV,GAE5C,YADAgV,IAGFzoB,GACGk5B,iBAAiBxmB,EAAM0mB,GAAY1mB,GAAMvB,GAAS+V,GAAM,SAAAA,GAAI,OAC3Dc,EAAQ,eAAKd,OAEdxmB,MAAK,SAAA1F,GACJw/B,EAAUrpB,EAAS,MAEpB1P,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,gBAGlBs6B,GAAS,KAEV,CAACtpB,EAAM+nB,EAAOvT,EAAM/V,EAAQsX,IAE/BzjB,qBAAU,WACHknB,GACH8C,MAED,CAAC9C,EAAM8C,IAEVhqB,qBAAU,WACI,MAAR0N,GAAgB0lB,GAAMpkB,SAAStB,GACjCsV,EAAQhoB,GAAM+nB,cAAcrV,IAE5BsV,EAAQ,QAET,CAACtV,IAEJ,IAAMwa,GAAe9d,uBACnB,SAAAU,GACE,IAAM1R,EAAQiC,KAAIioB,EAAYqG,YAAa7e,EAAU,MACrD,OAC6B,MAA3BwY,EAAYqG,aACH,MAATvwB,GACY,MAAZA,EAAM,GAECA,EAAM,GAER,OAET,CAACkqB,IAGGI,GAAetZ,uBACnB,SAACjU,EAAK6H,GACJglB,EAAQ,eACHd,EADE,gBAEJ/rB,EAAM,CACL6H,MAAOA,QAIb,CAACkkB,IAGG+H,GAAyB7f,uBAC7B,SAAC/C,EAAO2O,GAAR,OAAiBiK,EAAc,eAAKlM,EAAN,CAAkByJ,OAAQxH,OACxD,CAACjC,EAAYkM,IAGTiK,GAAgBlB,mBAAQ,WAC5B,OAAO2N,EACJrtB,OACEyK,EAAWyJ,OAAS,GAAKzJ,EAAWgC,OACpChC,EAAWyJ,OAAS,GAAKzJ,EAAWgC,MAAQhC,EAAWgC,OAEzD7Y,KAAI,SAAAC,GAAE,sBAAUA,EAAV,CAAcq5B,6BACtB,CAACG,EAAU5iB,EAAYyiB,IAEpBrM,GAAkBnB,mBAAQ,WAC9B,OAAOpf,EAAQ1M,KAAI,SAAAC,GAAE,sBAAUA,EAAV,CAAcwK,MAAOhB,EAAExJ,EAAGwK,cAC9C,CAACiC,EAASjD,IAEPyjB,GAAuBpB,mBAC3B,kBACE,aAAIla,MAAM,IAAI5R,KAAI,SAACC,EAAIgO,GAAL,OAChB,kBAAC,GAAD,CACEhV,IAAG,4BAAuBgV,GAC1BjF,QAAQ,OACR3F,MAAM,OACNC,OAAO,SAJT,gEAOJ,IAGI+2B,GAAgBvO,mBACpB,kBACEoK,GAAMl2B,KAAI,SAAAC,GAAE,MAAK,CACfa,MAAOb,EACPwK,MAAOhB,EAAE,cAAD,OAAexJ,UAG3B,IAGF,OACE,oCACIoK,EAqBA,oCAAG6iB,IApBH,oCACe,MAAZuM,GAAoB51B,EAAmBT,WACtC,kBAAC,GAAD,CAAa9H,KAAM0xB,GAAetgB,QAASugB,GAA3C,wDAEW,MAAZwM,IAAqB51B,EAAmBT,WACvC,kBAAC,GAAD,CACE9H,KAAM0xB,GACNxD,SAAU8Q,GACVrR,YAAaqQ,EAHf,8DAMW,MAAZG,GACC,kBAAC/gB,GAAD,CACEC,MAAOtM,KAAKuM,KAAK8gB,EAAgB7iB,EAAWgC,OAC5CC,KAAMjC,EAAWyJ,OACjB1Y,SAAUmlB,GAHZ,8DAUL/C,GACC,kBAAC,GAAD,CACEA,KAAMA,EACNG,QAASY,EACTva,KAAMA,EACN2nB,QAASA,EACTlpB,OAAQA,EACRqpB,UAAWA,EACXC,MAAOA,EACPsB,SAAUA,EACV39B,MAAOA,EACP49B,SAAUA,EACVpI,YAAa2I,GACbrV,KAAMA,EACNwB,aAAcA,GACdwE,aAAcA,GACd9E,aAAcE,EAAYF,aAC1BC,WAAYC,EAAYD,WACxBkS,iBAAkBA,GAClBD,iBAAkBA,GAClBtG,kBAAmBA,EACnBpP,MAAOiX,EACPhQ,SAAUiQ,EACV7H,oBAAqBA,EACrBF,eAAgBA,EAChBhI,qBAAsB/rB,GAAM+rB,qBAxB9B,oEA+B0Cta,MExT5CwR,GAAcvmB,EAAe,GAC7B+/B,GAAwB//B,EAAe,4BACvCggC,GAAsBhgC,EAAe,UAG9B07B,GAAQ,CAAC,SAAU,UAAW,QAAS,YACvCuE,GAAY,CAAC,UAAW,WAAY,SAAU,aAE9CC,GAAW,CAAC,QAEnBjV,GAAc,CAClB3rB,OAAQ,CACNgc,IAAK,CAAC6P,IACN0Q,WAAY,CAAC1Q,IACbzrB,KAAM,GACNunB,YAAa,GACb5nB,QAAS,GACT6Z,SAAU,CAACiS,IACXvP,eAAgB,CAACuP,IACjBrd,KAAM,GACNK,OAAQ,GACR2tB,sBAAuB,GACvBE,kBAAmB,GACnBC,QAAS,CAAC9Q,IACV+Q,gBAAiB,GACjB38B,KAAM,IAERF,QAAS,CACPic,IAAK,CAAC6P,IACN0Q,WAAY,CAAC1Q,IACbjS,SAAU,CAACiS,IACXzrB,KAAM,GACNoO,KAAM,GACNqyB,WAAY,CAAChV,IACbnV,KAAM,CAACmV,IACP9J,QAAS,IAEX5hB,MAAO,CACL6b,IAAK,CAAC6P,IACNzrB,KAAM,GACNoO,KAAM,CAACqd,IACPmR,UAAW,CAACnR,IACZtP,SAAU,CAACsP,IACXjS,SAAU,CAACiS,KAEb3rB,SAAU,CACR8b,IAAK,CAAC6P,IACNzrB,KAAM,CAACyrB,IACPrd,KAAM,CAACqd,IACPjS,SAAU,CAACiS,IACX0Q,WAAY,CAAC1Q,KAGf5rB,KAAM,CACJ+b,IAAK,CAAC6P,IACN7rB,OAAQ,CAAC6rB,IACTxP,SAAU,CAACwP,IACXjS,SAAU,CAACiS,MAqHA7nB,GAjHD,CACZ+nB,cAAe,CACb/rB,OAAQ,CACNgc,IAAK,CAAEhV,MAAO,MACdu1B,WAAY,CAAEv1B,MAAO,MACrB5G,KAAM,CAAE4G,MAAO,MACf2gB,YAAa,CAAE3gB,MAAO,MACtBjH,QAAS,CAAEiH,MAAO,MAClB4S,SAAU,CAAE5S,MAAO,MACnBsV,eAAgB,CAAEtV,MAAO,MACzBwH,KAAM,CAAExH,MAAO,MACf6H,OAAQ,CAAE7H,MAAO,MACjBw1B,sBAAuB,CAAEx1B,MAAO,MAChC01B,kBAAmB,CAAE11B,MAAO,MAC5B21B,QAAS,CAAE31B,OAAO,GAClB41B,gBAAiB,CAAE51B,MAAO,MAC1B/G,KAAM,CAAE+G,MAAO,OAEjBjH,QAAS,CACPic,IAAK,CAAEhV,MAAO,MACdu1B,WAAY,CAAEv1B,MAAO,MACrB5G,KAAM,CAAE4G,MAAO,MACfwH,KAAM,CAAExH,MAAO,MACf65B,WAAY,CAAE75B,MAAO,MACrB0P,KAAM,CAAE1P,MAAO,MACf4S,SAAU,CAAE5S,MAAO,MACnB+a,QAAS,CAAE/a,MAAO,OAEpB7G,MAAO,CACL6b,IAAK,CAAEhV,MAAO,MACd5G,KAAM,CAAE4G,MAAO,IACfwH,KAAM,CAAExH,MAAO,MACfg2B,UAAW,CAAEh2B,MAAO,MACpBuV,SAAU,CAAEvV,MAAO,MACnB4S,SAAU,CAAE5S,MAAO,OAErB9G,SAAU,CACR8b,IAAK,CAAEhV,MAAO,MACd5G,KAAM,CAAE4G,MAAO,MACfwH,KAAM,CAAExH,MAAO,MACf4S,SAAU,CAAE5S,MAAO,MACnBu1B,WAAY,CAAEv1B,MAAO,QAIzB85B,kBAAmB,CACjB9kB,IAAK,CAAEhV,MAAO,MACdhH,OAAQ,CAAEgH,MAAO,MACjBqV,SAAU,CAAErV,MAAO,MACnB4S,SAAU,CAAE5S,MAAO,OAErB+5B,mBAAoB,SAAC51B,EAAIuL,GACvB,IAAMsqB,EAAY5E,GAAMjkB,QAAQzB,GAC1BuqB,GAAyB,IAAfD,EAAmBL,GAAUK,GAAa,KAC1D,GAAe,MAAXC,EACF,OAAO5+B,QAAQU,UAAU2B,MAAK,kBAC5B5C,IAAMuC,IAAN,UAAa4iB,GAAb,YAA4Bga,EAA5B,YAAuC91B,EAAvC,UAIN+1B,sBAAuB,SAAA/wB,GAAO,OAC5B9N,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAIo8B,GAAuBtwB,OAChEgxB,oBAAqB,SAAAhxB,GAAO,OAC1B9N,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAIq8B,GAAqBvwB,OAC9DixB,sBAAuB,SAACj2B,EAAIuL,EAAMwU,EAAMc,GAAjB,OACrB3pB,QAAQU,UAAU2B,MAAK,WACrB,IAAMunB,EAAaJ,GACjBX,EACqB,MAArBS,GAAYjV,GAAgBiV,GAAYjV,GAAQ,IAElD,GAAIuV,EAAWZ,QAEb,MADAW,EAAQ,eAAKC,EAAWf,OAClB,IAAIpsB,EAEZ,IAAMkiC,EAAY5E,GAAMjkB,QAAQzB,GAC1BuqB,GAAyB,IAAfD,EAAmBL,GAAUK,GAAa,KAC1D,GAAe,MAAXC,EAAiB,CACnB,IAAMr9B,EAASsoB,KAAUhB,GAAM,qBAAGlkB,SAClC,OAAOlF,IAAMwyB,IAAN,UAAarN,GAAb,YAA4Bga,EAA5B,YAAuC91B,EAAvC,oBAAmDvH,SAGhEy9B,eAAgB,SAACl2B,EAAIuL,GACnB,IAAMsqB,EAAY5E,GAAMjkB,QAAQzB,GAC1BuqB,GAAyB,IAAfD,EAAmBL,GAAUK,GAAa,KAC1D,GAAe,MAAXC,EACF,OAAO5+B,QAAQU,UAAU2B,MAAK,kBAC5B5C,IAAMsiB,OAAN,UAAgB6C,GAAhB,YAA+Bga,EAA/B,YAA0C91B,EAA1C,UAINm2B,cAAe,SAACpW,EAAMc,GAAP,OACb3pB,QAAQU,UAAU2B,MAAK,WACrB,IAAMunB,EAAaJ,GAAsBX,EAAMS,GAAY1rB,MAC3D,GAAIgsB,EAAWZ,QAEb,MADAW,EAAQ,eAAKC,EAAWf,OAClB,IAAIpsB,EAGZ,IAAM8E,EAASsoB,KAAUhB,GAAM,qBAAGlkB,SAClC,OAAOlF,IAAM+C,KAAK67B,GAAX,eAAqC98B,QAEhDmsB,qBAAsB,SAAA5f,GAAO,OAC3B9N,QAAQU,UAAU2B,MAAK,kBACrB5C,IAAMuC,IAjKiB2rB,6CAiKvB,eACK7f,EADL,CAEEvM,OAAO,eACFuM,EAAQvM,OADP,GAED3C,Y,6aCxJb,IAmQe0R,mBAnQY,SAAC,GAA2B,EAAzB7L,SAA0B,IAAD,wBAAZxB,EAAY,4BAEnD4lB,EAYE5lB,EAZF4lB,KACAgF,EAWE5qB,EAXF4qB,KACAG,EAUE/qB,EAVF+qB,QACA3D,EASEpnB,EATFonB,aACAiG,EAQErtB,EARFqtB,YACAvG,EAOE9mB,EAPF8mB,aACAmV,EAMEj8B,EANFi8B,gBACAC,EAKEl8B,EALFk8B,eACA/U,EAIEnnB,EAJFmnB,aACAJ,EAGE/mB,EAHF+mB,WACA0D,EAEEzqB,EAFFyqB,qBACA/vB,EACEsF,EADFtF,OAEM2P,EAAMC,cAAND,EAEFkjB,EAAwBtqB,iBAAO,MAjBgB,EAkBZF,mBAAS,IAlBG,mBAkB9CipB,EAlB8C,KAkB/BsB,EAlB+B,OAmBnBvqB,mBAAS,IAnBU,mBAmB9C+oB,EAnB8C,KAmBnCC,EAnBmC,OAoBLhpB,mBAAS,MApBJ,mBAoB9CkpB,EApB8C,KAoB5BC,EApB4B,KAsBrDxoB,qBAAU,WACM,MAAVhJ,GACF0sB,EAAa,SAAU,QAAC1sB,QAAD,IAACA,OAAD,EAACA,EAAQmL,OAGjC,CAACnL,IAEJgJ,qBAAU,WAC8B,OAAlC6pB,EAAsBnqB,SACxBoqB,aAAaD,EAAsBnqB,SAErCmqB,EAAsBnqB,QAAU1F,YAAW,WACzC6vB,EAAsBnqB,QAAU,KAC5BqnB,GACFA,EAAqB,CACnBnsB,OAAQ,CAAEmvB,EAAG3B,EAAWlwB,OAAQ,SAAUugC,eAAgB,KAEzD/8B,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRoxB,EAAgBpxB,QAEhBoxB,EAAgB,OAGnBntB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdktB,EAAgB,SAGrB,OAEF,CAACxB,IAEJ,IAAMF,EAAe9d,uBACnB,SAAAU,GACE,IAAM1R,EAAQiC,KAAIsuB,EAAa7e,EAAU,MACzC,OAAmB,MAAf6e,GAAgC,MAATvwB,GAA6B,MAAZA,EAAM,GACzCA,EAAM,GAER,OAET,CAACuwB,IAGGlB,EAAsBre,uBAC1B,SAAAU,GACE,GAAIsY,GAAkC,MAAlBlB,EAAKpX,GAAmB,CAC1C,IAAM4d,EAAWR,EAAapd,GAC9B,GAAgB,MAAZ4d,EACF,OAAOA,EACF,GAAIxG,EAAKpX,GAAU/U,QACxB,OAAO4Q,EAAE,UAAD,OAAWub,EAAKpX,GAAU/U,UAGtC,OAAO,OAET,CAACmyB,EAAchG,EAAMkB,EAAczc,IAG/BgiB,EAAmBve,uBAAY,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,OAAI2mB,EAAale,EAAMzI,MAAI,CACvE2mB,IAGIC,EAAwBvZ,uBAC5B,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,aAAI2mB,EAAale,EAAD,OAAOzI,QAAP,IAAOA,GAAP,UAAOA,EAAGwI,cAAV,aAAO,EAAWvH,UAC3C,CAAC0lB,IAGGkF,EAAiBxe,uBAAY,SAAA/C,GAAK,OAAIghB,EAAahhB,KAAQ,CAC/DghB,IAEIQ,EAAsBze,uBAC1B,SAAC/C,EAAOyhB,GAAR,OAAqBN,EAAoBM,KACzC,CAACN,IAGGphB,EAAiBgD,uBAAY,SAAAtC,GAAM,OAAIA,EAAOE,cAAa,IAE3D+gB,EAAiBC,mBACrB,iBAAO,CACLhrB,MAAOoqB,EACPtjB,SAAU8jB,EACV3hB,WAAYshB,EACZrhB,cAAe2hB,EACf1hB,QAASmhB,EACT3gB,MAAOhB,EAAE,uBACTS,eAAgBA,KAElB,CACEA,EACAkhB,EACAO,EACAN,EACAK,EACAR,EACAzhB,IAIE+xB,GAAsB1P,mBAC1B,yCACIuP,QADJ,IACIA,OADJ,EACIA,EAAiBx2B,QAAO,SAAA5E,GAAE,MAAiB,QAAbA,EAAGa,SAAiBd,KAAI,SAAAC,GAAE,sBACnDA,EADmD,CAEtDwK,MAAOhB,EAAE,SAAD,OAAUxJ,EAAGwK,oBAH3B,QAIW,KACX,CAAC4wB,EAAiB5xB,IAGdgyB,GAAqB3P,mBACzB,wBACY,MAAVhyB,EAAA,iBACIwhC,QADJ,IACIA,OADJ,EACIA,EAAgBt7B,KAAI,SAAAC,GAAE,MAAK,CAC3Ba,MAAOb,EAAGgF,GACVwF,MAAOxK,EAAG6V,eAHd,QAIS,GACL,CACA,CACEhV,MAAK,OAAEhH,QAAF,IAAEA,OAAF,EAAEA,EAAQmL,GACfwF,MAAK,OAAE3Q,QAAF,IAAEA,OAAF,EAAEA,EAAQgc,QAGvB,CAAChc,EAAQwhC,IAGLlc,GAAgB0M,mBACpB,8BACmC,OAAjB,OAAhBT,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBU,aACd,CACA,QACIV,QADJ,IACIA,GADJ,UACIA,EAAkBU,mBADtB,aACI,EAAgC,GADpC,OAEIV,QAFJ,IAEIA,GAFJ,UAEIA,EAAkBU,mBAFtB,aAEI,EAAgC,IAEpC,QACIV,QADJ,IACIA,GADJ,UACIA,EAAkBU,mBADtB,aACI,EAAgC,GADpC,OAEIV,QAFJ,IAEIA,GAFJ,UAEIA,EAAkBU,mBAFtB,aAEI,EAAgC,KAGpC,OACN,QAACV,QAAD,IAACA,OAAD,EAACA,EAAkBU,cAGrB,OACE,kBAACC,GAAD,CAAahC,KAAMA,EAAMG,QAASA,EAAlC,6DACE,kBAACuR,GAAD,iEACE,kBAAC,GAAD,6DAAajyB,EAAE,cACf,kBAAC,GAAD,iEACE,kBAAC,GAAD,CACE+G,KAAK,OACLlI,KAAK,MACLxH,MAAK,iBAAEkkB,QAAF,IAAEA,GAAF,UAAEA,EAAMlP,WAAR,aAAE,EAAWhV,aAAb,QAAsB,GAC3B8G,SAAU6jB,EAAiB,OAC3BhhB,MAAOhB,EAAE,aACTvN,MACEgqB,IACuB,OAAlB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMlP,WAAN,eAAWjd,YAAqBmyB,EAAa,QAEhDpiB,WAAY2iB,EAAoB,OAChCU,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,QAdR,iEAiBF,kBAACwP,GAAD,uEACE,kBAACC,GAAD,CACE1/B,MACEgqB,IAC4B,OAAvB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMtR,gBAAN,eAAgB7a,YAAqBmyB,EAAa,aAHvD,qEAME,kBAAC,GAAD,CACE1vB,KAA+B,OAArB,OAAJ0pB,QAAI,IAAJA,GAAA,UAAAA,EAAMtR,gBAAN,eAAgB5S,OAAgB,CAACkkB,EAAKtR,SAAS5S,OAAS,GAC9D2V,aAAW,EACXjG,KAAK,QACLuK,iBAAe,EACf+C,YAAa2N,EAAiB,YAC9BpM,cAAY,EACZmB,OAAQqL,EACRzM,cAAeA,GARjB,gEAWF,kBAACyc,GAAD,CACE3/B,MACEgqB,IAC4B,OAAvB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMtR,gBAAN,eAAgB7a,YAAqBmyB,EAAa,aAHvD,wEAMGA,EAAa,aAAevhB,EAAE,0BAGnC,kBAAC,GAAD,iEACE,kBAAC,GAAD,CACE3I,MAAK,iBAAEkkB,QAAF,IAAEA,GAAF,UAAEA,EAAM7O,gBAAR,aAAE,EAAgBrV,aAAlB,QAA2B,GAChC8G,SAAU6e,EAAsB,YAChChc,MAAOhB,EAAE,mBACTQ,QAASuxB,GACTv2B,GAAG,WACH/I,MACEgqB,IAC4B,OAAvB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAM7O,gBAAN,eAAgBtd,YAAqBmyB,EAAa,aAErDpiB,WAAY2iB,EAAoB,YAVlC,iEAYA,kBAAC,GAAD,CACEja,UAAQ,EACRxQ,MAAK,iBAAEkkB,QAAF,IAAEA,GAAF,UAAEA,EAAMlrB,cAAR,aAAE,EAAcgH,aAAhB,QAAyB,GAC9B8G,SAAU6e,EAAsB,UAChChc,MAAOhB,EAAE,iBAETQ,QAASwxB,GAETx2B,GAAG,SACH/I,MACEgqB,IAC0B,OAArB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMlrB,cAAN,eAAcjB,YAAqBmyB,EAAa,WAEnDpiB,WAAY2iB,EAAoB,UAChC5Z,SAAoB,MAAV7X,EAdZ,kEAiBF,kBAACgiC,GAAD,yEACE,kBAAC,GAAD,yDACA,kBAAC,GAAD,yDACA,kBAACpU,GAAD,CACElX,KAAK,UACLrB,QAASoX,EACT5U,SAAUwU,EAHZ,8DAKG1c,EAAE,gBAQyB8F,MAElCmsB,GAAiBx0B,UAAOgM,IAAV,yFAAGhM,CAAH,yCAKdwjB,GAAaxjB,UAAOyjB,GAAV,qFAAGzjB,CAAH,8BACZ4gB,IAKEyC,GAAiBrjB,UAAOgM,IAAV,yFAAGhM,CAAH,0DAIhB,qBAAGmd,MAAkBxsB,aAApB,SAMCgkC,GAAyB30B,UAAO0Z,EAAV,iGAAG1Z,CAAH,6HASxB,SAAA9H,GAAK,OACLA,EAAMlD,OACNzE,cADA,kCAMEkkC,GAAuBz0B,UAAOgM,IAAV,+FAAGhM,CAAH,gDAGtB,SAAA9H,GAAK,OACLA,EAAMlD,OACNzE,cADA,6CAKEmkC,GAAsB10B,UAAOgM,IAAV,8FAAGhM,CAAH,iCAIrB,qBAAGmd,MAAkBxsB,aAApB,SAMCikC,GAAyB50B,UAAOgM,IAAV,iGAAGhM,CAAH,8DAIxB,qBAAGmd,MAAkBxsB,aAApB,SAQCizB,GAAQ5jB,UAAOgM,IAAV,gFAAGhM,CAAH,yB,yVCjUIpD,WAAe,YAA4B,EAAzBlD,SAA0B,IAAD,iNAAZxB,GAAY,4BAChD4B,GAAYiB,qBAAWC,IAAvBlB,QAEAyI,GAAMC,cAAND,EAHgD,GAInC8kB,cAAb/d,GAJgD,GAIhDA,KAAMvL,GAJ0C,GAI1CA,GAGZ82B,GAoBE38B,GApBF28B,iBACAzC,GAmBEl6B,GAnBFk6B,oBACAxxB,GAkBE1I,GAlBF0I,UACA2mB,GAiBErvB,GAjBFqvB,aACA3Q,GAgBE1e,GAhBF0e,YACApK,GAeEtU,GAfFsU,SACAme,GAcEzyB,GAdFyyB,eACA8H,GAaEv6B,GAbFu6B,aACAC,GAYEx6B,GAZFw6B,gBACArN,GAWEntB,GAXFmtB,SACAmC,GAUEtvB,GAVFsvB,iBACAC,GASEvvB,GATFuvB,QACAqN,GAQE58B,GARF48B,gBACAC,GAOE78B,GAPF68B,mBACAnN,GAME1vB,GANF0vB,YACAC,GAKE3vB,GALF2vB,kBACAC,GAIE5vB,GAJF4vB,OACA+C,GAGE3yB,GAHF2yB,oBACAluB,GAEEzE,GAFFyE,mBACA8tB,GACEvyB,GADFuyB,oBA1BsD,GA6BhCxvB,mBAAS,MA7BuB,qBA6BjD6iB,GA7BiD,MA6B3Cc,GA7B2C,SA+BlB3jB,mBAAS,CAC7C+jB,cAAc,EACdC,YAAY,EACZsG,YAAa,OAlCyC,qBA+BjDrG,GA/BiD,MA+BpCC,GA/BoC,SAqCRlkB,mBAAS,MArCD,qBAqCjD+5B,GArCiD,MAqC/BC,GArC+B,SAsCZh6B,mBAAS,MAtCG,qBAsCjDi6B,GAtCiD,MAsCjCC,GAtCiC,SAwCRl6B,mBAAS,IAxCD,qBAwCjD21B,GAxCiD,MAwC/BU,GAxC+B,SA0CtBr2B,oBAAS,GA1Ca,qBA0CjDm6B,GA1CiD,MA0CtCC,GA1CsC,SA4ChBp6B,mBAAS,CAC/C+jB,cAAc,EACdC,YAAY,EACZsG,YAAa,OA/CyC,qBA4CjD+P,GA5CiD,MA4CnCC,GA5CmC,SAiDlBt6B,oBAAS,GAjDS,qBAiDjDu6B,GAjDiD,MAiDpCC,GAjDoC,SAkDlBx6B,mBAASrE,GAAM88B,mBAlDG,qBAkDjDgC,GAlDiD,MAkDpCC,GAlDoC,SAmDtB16B,oBAAS,GAnDa,qBAmDjDgtB,GAnDiD,MAmDtCC,GAnDsC,SAqDNjtB,oBAAS,GArDH,qBAqDjDotB,GArDiD,MAqD9BC,GArD8B,MAuDlDC,GAAkBviB,uBAAY,WAClCsiB,IAAqB,KACpB,IAEGzE,GAAc7d,uBAAY,WAC9BsiB,IAAqB,KACpB,IAEG6L,GAAkBvP,mBACtB,sCAAU1wB,SAAV,IAAUA,QAAV,EAAUA,GAAsB4E,KAAI,SAAAC,GAAE,MAAK,CAAEwK,MAAOxK,EAAIa,MAAOb,SAC/D,IAGI6sB,GAAQ5f,uBAAY,WACxB4Y,GAAQ,MACRO,GAAe,CACbH,cAAc,EACdC,YAAY,EACZsG,YAAa,OAEfkQ,IAAe,GACf7N,OACC,CAACA,KAEJhsB,qBAAU,WACH45B,KACHG,GAAe/+B,GAAM88B,mBACrB6B,GAAgB,CACdvW,cAAc,EACdC,YAAY,EACZsG,aAAa,OAGhB,CAACiQ,KAEJ55B,qBAAU,WACHgF,IAAgC,MAAnBk0B,KAChBle,GAAYke,GAAgBtoB,UAChB,MAARlD,IAA0B,YAATA,IAA+B,WAATA,IACzC1S,GACGk9B,wBACAx8B,MAAK,SAAA1F,GAEU,MAAZA,GACiB,MAAjBA,EAASwC,MACgB,MAAzBxC,EAASwC,KAAK2nB,QAEdkZ,GAAoBrjC,EAASwC,MAE7B6gC,GAAoB,OAGvB58B,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd28B,GAAoB,OAId,MAAR3rB,IAAyB,WAATA,IAClB1S,GACGm9B,sBACAz8B,MAAK,SAAA1F,GACJ,GAAgB,MAAZA,GAAqC,MAAjBA,EAASwC,KAAc,CAAC,IACtC2nB,EAAYnqB,EAASwC,KAArB2nB,QACRoZ,GAAkBpZ,QAElBoZ,GAAkB,OAGrB98B,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd68B,GAAkB,UAKzB,CAACL,KAEJl5B,qBAAU,WAEA,MAANmC,KACCiV,MAAMwV,OAAOzqB,MACN,MAARuL,IACA0lB,GAAMpkB,SAAStB,IAEV1I,KACHue,IAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBqG,YAAa,KACbvG,cAAc,EACdC,YAAY,OAEd2I,KACAhxB,GACG+8B,mBAAmB51B,GAAIuL,IACvBhS,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACR2gC,GAAmB3gC,GAED,cAAdA,EAAKq0B,MACPP,IAAa,GAGf,IAAMQ,EAAcz2B,OAAOsK,KAAK3F,GAAM+nB,cAAcrV,KAC9C2G,EAAUhe,OAAOsK,KAAKnI,GAAMkZ,QAChC,SAACC,EAAMxb,GAcL,OAbI22B,EAAY9d,SAAS7Y,KAErByhC,GAAS5oB,SAAS7Y,IACL,MAAbqC,EAAKrC,IACW,MAAhBqC,EAAKrC,GAAKgM,GAEVwP,EAAKxb,GAAO,CAAE6H,MAAOxF,EAAKrC,GAAKgM,IAE/BwP,EAAKxb,GADY,SAARA,GAA0B,YAARA,EACf,CAAE6H,MAAOxF,EAAKrC,GAAK+G,KAAI,SAAAC,GAAE,OAAIA,EAAGgF,OAEhC,CAAEnE,MAAOxF,EAAKrC,KAGvBwb,IAfKtb,OAAA,IAAAA,CAAA,GAiBT2E,GAAM+nB,gBAEbC,GAAQ3O,GAEgB,MAApB4kB,IACFzC,GAAoBh+B,EAAMkV,SAG5Bsc,KACAwM,GAAoB,MACpB2C,GAAmB,SAGtB18B,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd85B,GAAoB,MACpB2C,GAAmB,MACR,MAAPz8B,GAA+B,MAAhBA,EAAI1G,UACrBkI,GAAQ9D,mBAKhB4vB,KACAwM,GAAoB,MACpB2C,GAAmB,SAGpB,CAACh3B,GAAIuL,GAAM1I,GAAWknB,KAEzB,IAAMhE,GAAe9d,uBACnB,SAAAU,GACE,IAAM1R,EAAQiC,KAAIioB,GAAYqG,YAAa7e,EAAU,MACrD,OAC6B,MAA3BwY,GAAYqG,aACH,MAATvwB,GACY,MAAZA,EAAM,GAECA,EAAM,GAER,OAET,CAACkqB,GAAYqG,cAGTlB,GAAsBre,uBAC1B,SAAAU,GACE,GAAIwY,GAAYF,cAAkC,MAAlBlB,GAAKpX,GAAmB,CACtD,IAAM4d,EAAWR,GAAapd,GAC9B,GAAgB,MAAZ4d,EACF,OAAOA,EACF,GAAIxG,GAAKpX,GAAU/U,QACxB,OAAO4Q,GAAE,UAAD,OAAWub,GAAKpX,GAAU/U,UAGtC,OAAO,OAET,CAACmyB,GAAchG,GAAMoB,GAAYF,aAAczc,KAG3C+c,GAAetZ,uBACnB,SAACjU,EAAK6H,GACJglB,GAAQ,eACHd,GADE,gBAEJ/rB,EAAM,CACL6H,MAAOA,QAIb,CAACkkB,KAGG8X,GAAsB5vB,uBAC1B,SAACjU,EAAK6H,GACJ+7B,GAAe,eACVD,GADS,gBAEX3jC,EAAM,CACL6H,MAAOA,QAIb,CAAC87B,KAGH95B,qBAAU,WACJgF,IACF0e,GAAa,WAAY9S,MAG1B,CAACA,KAEJ,IAAMqpB,GAAsB7vB,uBAC1B,SAAA/C,GACEA,EAAMoI,iBACNkqB,GAAgB,eACXD,GADU,CAEbrW,YAAY,EACZD,cAAc,KAEhBpoB,GACGs9B,cAAcwB,IAAa,SAAAI,GAAW,OACrCH,GAAe,eAAKG,OAErBx+B,MAAK,SAAA1F,GACJ2jC,GAAgB,eACXD,GADU,CAEbrW,YAAY,KAEVrtB,EAASwC,OACXitB,GAAc9e,GAAE,yBAEhB4yB,GAAkB,CAACvjC,EAASwC,MAAX,oBAAoB8gC,MACrCO,IAAe,GACH,MAAR3X,IAA6B,MAAbA,GAAKjrB,MACvBysB,GAAa,OAAQ,CAAC1tB,EAASwC,KAAK2J,SAIzC1F,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd+oB,GAAY9e,GAAE,uBACH,MAAPjK,GAA+B,MAAhBA,EAAI1G,SACrBkI,GAAQ9D,cAEiB,MAArBsC,EAAI1G,SAASwC,KACfmhC,GAAgB,CACdvW,cAAc,EACdC,YAAY,EACZsG,YAAajtB,EAAI1G,SAASwC,OAG5BmhC,GAAgB,CACdvW,cAAc,EACduG,YAAa+P,GAAa/P,YAC1BtG,YAAY,SAMxB,CAACnlB,GAASo7B,GAAgBpX,GAAMwB,GAAcoW,GAAaJ,GAAc/yB,KAGrE8c,GAAerZ,uBACnB,SAAA/C,GACEA,EAAMoI,iBACN8T,IAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBF,cAAc,EACdC,YAAY,OAEdroB,GACGo9B,sBAAsBj2B,GAAIuL,GAAMwU,IAAM,SAAAA,GAAI,OAAIc,GAAQ,eAAKd,OAC3DxmB,MAAK,SAAA1F,GACJ21B,IAAa,GACT31B,EAASwC,OACXg+B,GAAoBxgC,EAASwC,KAAMkV,IACnC+X,GAAc9e,GAAE,wBAChB4c,IAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,WAIjB5mB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd+oB,GAAY9e,GAAE,sBAEH,MAAPjK,GAA+B,MAAhBA,EAAI1G,UACrBkI,GAAQ9D,cACRmpB,IAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,QAGW,MAArB3mB,EAAI1G,SAASwC,KACf+qB,IAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,EACZsG,YAAajtB,EAAI1G,SAASwC,UAG5B+qB,IAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,YAMxB,CAACnlB,GAASgkB,GAAM/f,GAAIq0B,GAAqB7K,GAAchlB,GAAG+G,KAGtD4N,GAAelR,uBAAY,WAC/BpP,GACGq9B,eAAel2B,GAAIuL,IACnBhS,MAAK,SAAA1F,GACJwgC,GAAoB,MACpB/Q,GAAc9e,GAAE,6BAEjBlK,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd+oB,GAAY9e,GAAE,wBAGH,MAAPjK,GAA+B,MAAhBA,EAAI1G,UACrBkI,GAAQ9D,iBAGXszB,SAAQ,kBAAMzF,UAChB,CAAC/pB,GAAS+pB,GAAa9lB,GAAIq0B,GAAqB7vB,GAAG+G,KAEtD1N,qBAAU,WACe,MAAnBk5B,IAAkD,MAAvBA,GAAgBlmB,KAMhB,MAApBimB,IAA4BA,GAAiBjmB,IAJpDyW,GADEzkB,GACe,MAAR0I,GAAA,sBAA8BA,IAAS,cAE/B,MAARA,GAAA,yBAAiCA,IAAS,oBAetD,CAACwrB,GAAiBD,GAAkBj0B,GAAWykB,GAAU9iB,GAAG+G,KAE/D,IAAMkoB,GAAyBxrB,uBAC7B,SAAAhT,GACE,GACE4N,IACS,WAAT0I,IACgB,MAAhBmpB,IACmB,MAAnBC,GAEA,GAAY,MAAR1/B,GAAyB,KAATA,GAAgC,OAAb,OAAJ8qB,SAAI,IAAJA,QAAA,EAAAA,GAAMnrB,SAAiB,CACxD,IACmB,EADb8+B,EAAS,OAAGgB,SAAH,IAAGA,QAAH,EAAGA,GAAcnoB,MAAK,SAAAvR,GAAE,OAAM,OAAFA,QAAE,IAAFA,OAAA,EAAAA,EAAIgF,MAAO/K,KACtD,UAAIy+B,QAAJ,IAAIA,OAAJ,EAAIA,EAAW1zB,GACb,GAA4B,OAApB,OAAJ+f,SAAI,IAAJA,IAAA,UAAAA,GAAMnrB,eAAN,eAAeiH,OAAe,CAChC,IAAM83B,EAAc,OAAGgB,SAAH,IAAGA,QAAH,EAAGA,GAAiB/0B,QACtC,SAAAg0B,GAAE,aAAM,OAAFA,QAAE,IAAFA,GAAA,UAAAA,EAAI3+B,YAAJ,eAAU+K,OAAV,OAAiB0zB,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAW1zB,OAEpCuzB,GAAoBI,OACf,CAAC,IAAD,EACCE,EAAO,OAAGc,SAAH,IAAGA,QAAH,EAAGA,GAAiBpoB,MAC/B,SAAAqnB,GAAE,aAAIA,EAAG5zB,MAAH,OAAU+f,SAAV,IAAUA,IAAV,UAAUA,GAAMnrB,eAAhB,aAAU,EAAeiH,WAEtB,OAAPg4B,QAAO,IAAPA,GAAA,UAAAA,EAAS5+B,YAAT,eAAe+K,OAAf,OAAsB0zB,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAW1zB,KACnCuhB,GAAa,UAAW,MAE1BgS,GAAoBoB,SAGtBpB,GAAoBoB,SAGtBpB,GAAoBoB,MAI1B,CACED,GACAC,GACApT,GACA1e,GACA0I,GALF,OAMEwU,SANF,IAMEA,QANF,EAMEA,GAAMnrB,UAIViJ,qBAAU,WACJgF,IACF4mB,GACE,kBAAC,GAAD,CACExyB,MACEkqB,GAAYF,cACK,MAAjBlB,GAAKtR,WACqB,MAAzBsR,GAAKtR,SAAS7a,WAAqBmyB,GAAa,aAJrD,4DAOGA,GAAa,aAAevhB,GAAE,yBAKnC3B,IACQ,MAAR0I,IACS,WAATA,IACgB,MAAhBmpB,IACmB,MAAnBC,IACQ,MAAR5U,IACa,MAAbA,GAAK9qB,KAELw+B,GAAuB1T,GAAK9qB,KAAK4G,OAEjC03B,GAAoBoB,MAGrB,CAAC5U,GAAMld,KAEV,IAAMolB,GAAuBpB,mBAAQ,WACnC,IAAImR,EAAiB,GACrB,OAAQzsB,IACN,IAAK,SACHysB,EAAiB,GACjB,MACF,IAAK,UACHA,EAAiB,EACjB,MACF,IAAK,QAGL,IAAK,WACHA,EAAiB,EACjB,MACF,QACEA,EAAiB,GAGrB,OAAO,aAAIrrB,MAAMqrB,IAAiBj9B,KAAI,SAACC,EAAIgO,GAAL,OACpC,kBAAC,GAAD,CACEhV,IAAG,4BAAuBgV,GAC1BjF,QAAQ,OACR3F,MAAM,OACNC,OAAO,UACPghB,OAAO,aACP0E,UAAU,IANZ,mEASD,CAACxY,KAEEiW,GAAwBvZ,uBAC5B,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,aAAI2mB,GAAale,EAAD,OAAOzI,QAAP,IAAOA,GAAP,UAAOA,EAAGwI,cAAV,aAAO,EAAWvH,UAC3C,CAAC0lB,KAGGiF,GAAmBve,uBAAY,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,OAAI2mB,GAAale,EAAMzI,MAAI,CACvE2mB,KAGI0W,GAAwBhwB,uBAC5B,SAAA5E,GAAI,OAAI,SAAA6B,GAAK,eACXqc,GACEle,EACyB,MAApB,OAAL6B,QAAK,IAALA,GAAA,UAAAA,EAAO9B,cAAP,eAAevH,OAAe,QAACqJ,QAAD,IAACA,GAAD,UAACA,EAAO9B,cAAR,aAAC,EAAevH,OAAS,OAE3D,CAAC0lB,KAGG2W,GAA8BjwB,uBAClC,SAAA5E,GAAI,OAAI,SAAA6B,GAAK,eACXqc,GACEle,EACyB,MAApB,OAAL6B,QAAK,IAALA,GAAA,UAAAA,EAAO9B,cAAP,eAAevH,OAAf,OAA8BqJ,QAA9B,IAA8BA,GAA9B,UAA8BA,EAAO9B,cAArC,aAA8B,EAAevH,MAAQ,SAEzD,CAAC0lB,KAGG4W,GAAgBtR,mBACpB,0BAC4B,OAAtB,OAAJ9G,SAAI,IAAJA,IAAA,UAAAA,GAAMjrB,YAAN,mBAAY+G,aAAZ,eAAoB,IAClB,kBAACu8B,GAAD,CAAkBpkC,IAAI,kBAAtB,+DACE,kBAACyuB,GAAD,CACElX,KAAK,UACLrB,QAAS,SAAAtP,GACP08B,IAAa,GACbI,IAAe,IAEjBt5B,MAAM,OANR,2DAQGoG,GAAE,qBAGL,OACN,QAACub,SAAD,IAACA,IAAD,UAACA,GAAMjrB,YAAP,aAAC,EAAY+G,MAAO2I,KAGhBwuB,GAAqBnM,mBACzB,kCACE+F,GAAe7xB,KAAI,SAAAC,GAAE,sBAChBA,EADgB,CAEnBwK,MAAOhB,GAAE,SAAD,OAAUxJ,EAAGwK,oBAHzB,QAIS,KACT,CAAConB,GAAgBpoB,KAGb6zB,GAA0BxR,mBAC9B,kBACE6F,GAAoB3xB,KAAI,SAAAC,GAAE,sBACrBA,EADqB,CAExBwK,MAAOhB,GAAE,SAAD,OAAUxJ,EAAGwK,eAEzB,CAAChB,GAAGkoB,KAGA4L,GAAmBzR,mBACvB,kBACkB,MAAhB6N,GAAA,CAEI,CAAE74B,MAAO,GAAI2J,MAAOhB,GAAE,kBAF1B,oBAGOkwB,GAAa35B,KAAI,SAAAC,GAAE,YAAK,CACzBa,MAAOb,EAAGgF,GACVwF,MAAK,UAAExK,EAAGqI,YAAL,QAAarI,EAAGgF,SAGvB,KACN,CAAC00B,GAAclwB,KAGX+zB,GAA2B1R,mBAC/B,kBACkB,MAAhB6N,GAAA,aAEOA,GAAa35B,KAAI,SAAAC,GAAE,MAAK,CACzBa,MAAOb,EAAGgF,GACVwF,MAAOxK,EAAGqI,UAGZ,KACN,CAACqxB,KAGG3B,GAAuBlM,mBAC3B,kBACsB,MAApBgM,GAAA,CAEI,CAAEh3B,MAAO,GAAI2J,MAAOhB,GAAE,kBAF1B,oBAGOquB,GAAiB93B,KAAI,SAAAC,GAAE,YAAK,CAC7Ba,MAAOb,EAAGgF,GACVwF,MAAK,UAAExK,EAAG6V,WAAL,QAAY7V,EAAGgF,SAGtB,KACN,CAAC6yB,GAAkBruB,KAGfyuB,GAA0BpM,mBAC9B,kBACyB,MAAvBiG,GACIA,GAAoB/xB,KAAI,SAAAC,GAAE,sBACvBA,EADuB,CAE1BwK,MAAOhB,GAAE,SAAD,OAAUxJ,EAAGwK,aAErB,KACN,CAACsnB,GAAqBtoB,KAGlBg0B,GAAqB3R,mBACzB,kBACoB,MAAlBsQ,GAAA,CAEI,CAAEt7B,MAAO,GAAI2J,MAAOhB,GAAE,kBAF1B,oBAGO2yB,GAAep8B,KAAI,SAAAC,GAAE,YAAK,CAC3Ba,MAAOb,EAAGgF,GACVwF,MAAK,UAAExK,EAAG6V,WAAL,QAAY7V,EAAGgF,SAGtB,KACN,CAACm3B,GAAgB3yB,KAGbi0B,GAAuB5R,mBAC3B,kBACsB,MAApBoQ,GACIA,GAAiBl8B,KAAI,SAAAC,GAAE,YAAK,CAC5Ba,MAAOb,EAAGgF,GACVwF,MAAK,UAAExK,EAAG6V,WAAL,QAAY7V,EAAGgF,OAEpB,KACN,CAACi3B,KAGGyB,GAAezwB,uBAAY,kBAAMuhB,IAAa,KAAO,CAACA,KAEtDmP,GAAgB1wB,uBAAY,kBAAMuhB,IAAa,KAAQ,CAACA,KAExDoP,GAAS3wB,uBAAY,WACzB4f,KACAwM,GAAoB,QACnB,CAACxM,GAAOwM,KAEX,OACE,oCACE,kBAAC,GAAD,8DACW,MAARtU,IAAgB,oCAAGkI,IACV,WAAT1c,IAA6B,MAARwU,IACpB,oCACE,kBAAC,GAAD,CACExU,KAAK,OACLlI,KAAK,MACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMlP,WAAR,aAAE,EAAWhV,aAAb,QAAsB,GAC3B8G,SAAU6jB,GAAiB,OAC3BhhB,MAAOhB,GAAE,aACTvN,MACEkqB,GAAYF,eACW,OAAlB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMlP,WAAN,eAAWjd,UAAmBmyB,GAAa,QAE9CpiB,WAAY2iB,GAAoB,OAChC5Z,WAAY7J,IAAa6mB,GAAQqN,GAAiB,MAAOxrB,KACzD1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,QAhBR,6DAkBA,kBAAC,GAAD,CACE3b,KAAK,OACLlI,KAAK,aACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMqR,kBAAR,aAAE,EAAkBv1B,aAApB,QAA6B,GAClC8G,SAAU6jB,GAAiB,cAC3BhhB,MAAOhB,GAAE,qBACTvN,MACEkqB,GAAYF,eACkB,OAAzB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMqR,kBAAN,eAAkBx9B,UACjBmyB,GAAa,eAEjBpiB,WAAY2iB,GAAoB,cAChC5Z,WACI7J,IAAa6mB,GAAQqN,GAAiB,aAAcxrB,KAExD1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,QAnBR,6DAqBA,kBAAC,GAAD,CACE3b,KAAK,OACLlI,KAAK,OACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAM1c,YAAR,aAAE,EAAYxH,aAAd,QAAuB,GAC5B8G,SAAU6jB,GAAiB,QAC3BhhB,MAAOhB,GAAE,cACTvN,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAM1c,YAAN,eAAYzP,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChC5Z,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GACbmkB,UAAW,IACXzjB,QAAM,EACN2jB,KAAM,YAfR,6DAiBA,kBAAC,GAAD,CACE3b,KAAK,OACLlI,KAAK,cACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMvD,mBAAR,aAAE,EAAmB3gB,aAArB,QAA8B,GACnC8G,SAAU6jB,GAAiB,eAC3BhhB,MAAOhB,GAAE,qBACTvN,MACEkqB,GAAYF,eACmB,OAA1B,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMvD,mBAAN,eAAmB5oB,YAChBmyB,GAAa,gBAEnBpiB,WAAY2iB,GAAoB,eAChC5Z,WACI7J,IAAa6mB,GAAQqN,GAAiB,cAAexrB,KAEzD1I,YAAaA,GACbmkB,UAAW,IACXzjB,QAAM,EACN2jB,KAAM,YAlBR,6DAoBA,kBAAC,GAAD,CACE7jB,KAAK,SACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMrc,cAAR,aAAE,EAAc7H,aAAhB,QAAyB,GAC9B8G,SAAU6jB,GAAiB,UAC3BhhB,MAAOhB,GAAE,gBACTvN,MACEkqB,GAAYF,eACc,OAArB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMrc,cAAN,eAAc9P,YAAqBmyB,GAAa,WAEnDpiB,WAAY2iB,GAAoB,UAChC5Z,WACI7J,IAAa6mB,GAAQqN,GAAiB,SAAUxrB,KAEpD1I,YAAaA,GACbyB,IAAK,IACL3R,IAAK,EACLq/B,KAAM,EACNzmB,KAAK,SACL7H,QAAM,EAlBR,6DAoBA,kBAAC,GAAD,CACEL,KAAK,wBACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMsR,6BAAR,aAAE,EAA6Bx1B,aAA/B,QAAwC,GAC7C8G,SAAU6e,GAAsB,yBAChChc,MAAOhB,GAAE,gCACTvN,MACEkqB,GAAYF,eAC6B,OAApC,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMsR,6BAAN,eAA6Bz9B,YAC1BmyB,GAAa,0BAEnBpiB,WAAY2iB,GAAoB,yBAEhC5Z,WAEI7J,IACA6mB,GAAQqN,GAAiB,wBAAyBxrB,KAItD1I,YAAaA,GACba,QAAM,EACNY,IAAK,MACL3R,IAAK,EAtBP,6DAwBA,kBAAC,GAAD,CACE0Q,KAAK,oBACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMwR,yBAAR,aAAE,EAAyB11B,aAA3B,QAAoC,GACzC8G,SAAU6e,GAAsB,qBAChChc,MAAOhB,GAAE,4BACTvN,MACEkqB,GAAYF,eACyB,OAAhC,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMwR,yBAAN,eAAyB39B,YACtBmyB,GAAa,sBAEnBpiB,WAAY2iB,GAAoB,qBAEhC5Z,WAEI7J,IACA6mB,GAAQqN,GAAiB,oBAAqBxrB,KAIlD1I,YAAaA,GACba,QAAM,EACNY,IAAK,MACL3R,IAAK,EAtBP,6DAwBA,kBAAC,GAAD,CACE0Q,KAAK,kBACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAM0R,uBAAR,aAAE,EAAuB51B,aAAzB,QAAkC,GACvC8G,SAAU6e,GAAsB,mBAChChc,MAAOhB,GAAE,0BACTvN,MACEkqB,GAAYF,eACuB,OAA9B,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAM0R,uBAAN,eAAuB79B,YACpBmyB,GAAa,oBAEnBpiB,WAAY2iB,GAAoB,mBAEhC5Z,WAEI7J,IAAa6mB,GAAQqN,GAAiB,kBAAmBxrB,KAI7D1I,YAAaA,GACba,QAAM,EACNY,IAAK,IACL3R,IAAK,EArBP,6DAuBA,kBAAC,GAAD,CACEkJ,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMyR,eAAR,aAAE,EAAe31B,aAAjB,QAA0B,GAC/B8G,SAAU6e,GAAsB,WAChChc,MAAOhB,GAAE,iBACTQ,QAASguB,GACT/7B,MACEkqB,GAAYF,eACe,OAAtB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMyR,eAAN,eAAe59B,YAAqBmyB,GAAa,YAEpDpiB,WAAY2iB,GAAoB,WAChCtmB,GAAG,UACH0M,WACI7J,IAAa6mB,GAAQqN,GAAiB,UAAWxrB,KAErD1I,YAAaA,GAdf,8DAgBA,kBAAC,GAAD,CACEhH,MAAK,UAAEkkB,GAAK5O,eAAetV,aAAtB,QAA+B,GACpC8G,SAAU6e,GAAsB,kBAChChc,MAAOhB,GAAE,yBACTQ,QAASqzB,GACTphC,MACEkqB,GAAYF,eACsB,OAA7B,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAM5O,sBAAN,eAAsBvd,YACnBmyB,GAAa,mBAEnBpiB,WAAY2iB,GAAoB,kBAChCtmB,GAAG,iBACH0M,WACI7J,IAAa6mB,GAAQqN,GAAiB,iBAAkBxrB,KAE5D1I,YAAaA,GAff,8DAiBA,kBAAC,GAAD,CACEhH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAM9qB,YAAR,aAAE,EAAY4G,aAAd,QAAuB,GAC5B8G,SAAU6e,GAAsB,QAChChc,MAAOhB,GAAE,cACTQ,QAASszB,GACTrhC,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAM9qB,YAAN,eAAYrB,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChCtmB,GAAG,OACH0M,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GAZf,8DAcA,kBAAC,GAAD,CACEhH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMnrB,eAAR,aAAE,EAAeiH,aAAjB,QAA0B,GAC/B8G,SAAU6e,GAAsB,WAChChc,MAAOhB,GAAE,iBACTQ,QAAS+tB,GACT97B,MACEkqB,GAAYF,eACe,OAAtB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMnrB,eAAN,eAAehB,YAAqBmyB,GAAa,YAEpDpiB,WAAY2iB,GAAoB,WAChCtmB,GAAG,UACH0M,WACI7J,IAAa6mB,GAAQqN,GAAiB,UAAWxrB,KAErD1I,YAAaA,GAdf,8DAgBA,kBAAC,GAAD,CACEhH,MAAK,OAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMjrB,YAAR,iBAAE,EAAY+G,aAAd,aAAE,EAAoB,GAC3B8G,SAAUs1B,GAAsB,QAChCzyB,MAAOhB,GAAE,eACTQ,QAASwzB,GACTzT,KAAMsS,GACNnS,QAAS,kBAAMoS,IAAa,IAC5BuB,OAAQ,kBAAMvB,IAAa,IAC3B5rB,UAAWysB,GACXlhC,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMjrB,YAAN,eAAYlB,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChCtmB,GAAG,OACH0M,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GAhBf,+DAoBM,YAAT0I,IAA8B,MAARwU,IACrB,oCACE,kBAAC,GAAD,CACExU,KAAK,OACLlI,KAAK,MACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMlP,WAAR,aAAE,EAAWhV,aAAb,QAAsB,GAC3B8G,SAAU6jB,GAAiB,OAC3BhhB,MAAOhB,GAAE,aACTvN,MACEkqB,GAAYF,eACW,OAAlB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMlP,WAAN,eAAWjd,YAAqBmyB,GAAa,QAEhDpiB,WAAY2iB,GAAoB,OAChC5Z,WAAY7J,IAAa6mB,GAAQqN,GAAiB,MAAOxrB,KACzD1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,QAhBR,6DAkBA,kBAAC,GAAD,CACE3b,KAAK,OACLlI,KAAK,aACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,UAAEA,GAAMqR,kBAAR,aAAE,EAAkBv1B,aAApB,QAA6B,GAClC8G,SAAU6jB,GAAiB,cAC3BhhB,MAAOhB,GAAE,qBACTvN,MACEkqB,GAAYF,eACkB,OAAzB,OAAJlB,SAAI,IAAJA,IAAA,UAAAA,GAAMqR,kBAAN,eAAkBx9B,UACjBmyB,GAAa,eAEjBpiB,WAAY2iB,GAAoB,cAChC5Z,WACI7J,IAAa6mB,GAAQqN,GAAiB,aAAcxrB,KAExD1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,QAnBR,6DAqBA,kBAAC,GAAD,CACE3b,KAAK,OACLlI,KAAK,OACLxH,MAAK,iBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAM1c,YAAR,cAAE,GAAYxH,aAAd,QAAuB,GAC5B8G,SAAU6jB,GAAiB,QAC3BhhB,MAAOhB,GAAE,cACTvN,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM1c,YAAN,iBAAYzP,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChC5Z,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,YAhBR,6DAkBA,kBAAC,GAAD,CACErrB,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAM9qB,YAAR,cAAE,GAAY4G,aAAd,UAAuB,GAC5B8G,SAAU,SAAAuC,KACVM,MAAOhB,GAAE,cACTQ,QAASszB,GACTrhC,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM9qB,YAAN,iBAAYrB,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChCtmB,GAAG,OACH0M,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GAZf,8DAcA,kBAAC,GAAD,CACE0I,KAAK,OACLlI,KAAK,aACLxH,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAM2V,kBAAR,cAAE,GAAkB75B,aAApB,UAA6B,GAClC8G,SAAU6e,GAAsB,cAChChc,MAAOhB,GAAE,qBACTvN,MACEkqB,GAAYF,eACkB,OAAzB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM2V,kBAAN,iBAAkB9hC,YACfmyB,GAAa,eAEnBpiB,WAAY2iB,GAAoB,cAChC5Z,WACI7J,IAAa6mB,GAAQqN,GAAiB,aAAcxrB,KAExD1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EAjBb,6DAmBA,kBAAC,GAAD,CACEprB,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAMxU,YAAR,cAAE,GAAY1P,aAAd,UAAuB,GAC5B8G,SAAUu1B,GAA4B,QACtC1yB,MAAOhB,GAAE,cACTQ,QAASiuB,GACTh8B,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAMxU,YAAN,iBAAY3X,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChCtmB,GAAG,OACH0M,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GAZf,8DAcA,kBAAC,GAAD,CACEwJ,UAAQ,EACRxQ,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAMnJ,eAAR,cAAE,GAAe/a,aAAjB,UAA0B,GAC/B8G,SAAU6e,GAAsB,WAChChc,MAAOhB,GAAE,iBACTQ,QAASyzB,GACTxhC,MACEkqB,GAAYF,eACe,OAAtB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAMnJ,eAAN,iBAAehjB,YAAqBmyB,GAAa,YAEpDpiB,WAAY2iB,GAAoB,WAChCtmB,GAAG,UACH0M,WACI7J,IAAa6mB,GAAQqN,GAAiB,UAAWxrB,KAErD1I,YAAaA,GAff,+DAmBM,UAAT0I,IAA4B,MAARwU,IACnB,oCACE,kBAAC,GAAD,CACExU,KAAK,OACLlI,KAAK,MACLxH,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAMlP,WAAR,cAAE,GAAWhV,aAAb,UAAsB,GAC3B8G,SAAU6jB,GAAiB,OAC3BhhB,MAAOhB,GAAE,aACTvN,MACEkqB,GAAYF,eACW,OAAlB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAMlP,WAAN,iBAAWjd,YAAqBmyB,GAAa,QAEhDpiB,WAAY2iB,GAAoB,OAChC5Z,WAAY7J,IAAa6mB,GAAQqN,GAAiB,MAAOxrB,KACzD1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,QAhBR,6DAkBA,kBAAC,GAAD,CACE3b,KAAK,OACLlI,KAAK,YACLxH,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAM8R,iBAAR,cAAE,GAAiBh2B,aAAnB,UAA4B,GACjC2J,MAAOhB,GAAE,oBACTvN,MACEkqB,GAAYF,eACiB,OAAxB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM8R,iBAAN,iBAAiBj+B,YAAqBmyB,GAAa,cAEtDpiB,WAAY2iB,GAAoB,aAChC5Z,UAAQ,EACRsa,UAAW,IACXC,UAAW,EAZb,6DAcA,kBAAC,GAAD,CACE1b,KAAK,OACLlI,KAAK,WACLxH,OAAW,OAAJkkB,SAAI,IAAJA,IAAA,WAAAA,GAAM3O,gBAAN,iBAAgBvV,OAAQwV,KAAM,OAAC0O,SAAD,IAACA,IAAD,WAACA,GAAM3O,gBAAP,cAAC,GAAgBvV,OAAO9F,O9G3jC5C,oB8G2jCsE,GACvFyP,MAAOhB,GAAE,4BACTvN,MACEkqB,GAAYF,eACgB,OAAvB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM3O,gBAAN,iBAAgBxd,YAAqBmyB,GAAa,aAErDpiB,WAAY2iB,GAAoB,YAChC5Z,UAAQ,EACRsa,UAAW,IACXC,UAAW,EAZb,6DAcA,kBAAC,GAAD,CACE1b,KAAK,OACLlI,KAAK,OACLxH,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAM1c,YAAR,cAAE,GAAYxH,aAAd,UAAuB,GAC5B8G,SAAU6jB,GAAiB,QAC3BhhB,MAAOhB,GAAE,cACTvN,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM1c,YAAN,iBAAYzP,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChC5Z,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,YAhBR,6DAkBA,kBAAC,GAAD,CACErrB,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAM9qB,YAAR,mBAAE,GAAY4G,aAAd,cAAE,GAAmBd,KAAI,SAAAC,GAAE,8BAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAIgF,UAAR,QAAchF,YAAzC,UAAgD,GACrD2H,SAAU6e,GAAsB,QAChChc,MAAOhB,GAAE,cACTQ,QAASuzB,GACTthC,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM9qB,YAAN,iBAAYrB,YAAqBmyB,GAAa,SAEjD1Z,UAAQ,EACR1I,WAAY2iB,GAAoB,QAChCtmB,GAAG,OACH0M,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GAbf,+DAiBM,aAAT0I,IAA+B,MAARwU,IACtB,oCACE,kBAAC,GAAD,CACExU,KAAK,OACLlI,KAAK,MACLxH,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAMlP,WAAR,cAAE,GAAWhV,aAAb,UAAsB,GAC3B8G,SAAU6jB,GAAiB,OAC3BhhB,MAAOhB,GAAE,aACTvN,MACEkqB,GAAYF,eACW,OAAlB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAMlP,WAAN,iBAAWjd,YAAqBmyB,GAAa,QAEhDpiB,WAAY2iB,GAAoB,OAChC5Z,WAAY7J,IAAa6mB,GAAQqN,GAAiB,MAAOxrB,KACzD1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,QAhBR,6DAkBA,kBAAC,GAAD,CACE3b,KAAK,OACLlI,KAAK,OACLxH,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAM1c,YAAR,cAAE,GAAYxH,aAAd,UAAuB,GAC5B8G,SAAU6jB,GAAiB,QAC3BhhB,MAAOhB,GAAE,cACTvN,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM1c,YAAN,iBAAYzP,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChC5Z,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,YAhBR,6DAkBA,kBAAC,GAAD,CACErrB,MAAK,kBAAEkkB,SAAF,IAAEA,IAAF,WAAEA,GAAM9qB,YAAR,cAAE,GAAY4G,aAAd,UAAuB,GAC5B8G,SAAUu1B,GAA4B,QACtC1yB,MAAOhB,GAAE,cACTQ,QAASszB,GACTrhC,MACEkqB,GAAYF,eACY,OAAnB,OAAJlB,SAAI,IAAJA,IAAA,WAAAA,GAAM9qB,YAAN,iBAAYrB,YAAqBmyB,GAAa,SAEjDpiB,WAAY2iB,GAAoB,QAChCtmB,GAAG,OACH0M,WAAY7J,IAAa6mB,GAAQqN,GAAiB,OAAQxrB,KAC1D1I,YAAaA,GAZf,gEAkBN,kBAAC,GAAD,CAAgBA,UAAWA,GAAY,EAAI,EAA3C,6DACGA,GACC,oCACE,kBAAC4f,GAAD,CACElX,KAAK,WACLrB,QAASyuB,GACTjsB,SAAUyU,GAAYD,WAHxB,2DAKG1c,GAAE,WAEJ5F,GAAmBT,WAClB,oCACE,kBAAC,GAAD,2DACA,kBAAC,GAAD,2DACA,kBAAC,GAAD,4DAGJ,kBAACskB,GAAD,CACElX,KAAK,UACLrB,QAASoX,GACT5U,SAAUyU,GAAYD,WAHxB,2DAKG1c,GAAE,YAIP,oCACE,kBAACie,GAAD,CAAclX,KAAK,WAAWrB,QAAS0uB,GAAvC,2DACGp0B,GAAE,gBAEJ5F,GAAmBT,WAClB,oCACE,kBAAC,GAAD,2DACA,kBAAC,GAAD,4DAGH2rB,IAAqBI,GACpB,kBAACzH,GAAD,CAAclX,KAAK,QAAQrB,QAASsgB,GAApC,2DACGhmB,GAAE,kBAGL5F,GAAmBT,WAAa,kBAAC,GAAD,2DAEjC2rB,IACC,kBAACrH,GAAD,CAAclX,KAAK,UAAUrB,QAASwuB,GAAtC,2DACGl0B,GAAE,kBAMZ3B,IAAa40B,IACZ,kBAAC,GAAD,CACE1X,KAAM4X,GACN5S,KAAM0S,GACNpQ,QAASqQ,GACTnW,aAAcsW,GACdrQ,YAAa+P,GAAa/P,YAC1BvG,aAAcsW,GAAatW,aAC3BmV,gBAAiBA,GACjBC,eAAgBY,GAChB3V,aAAcwW,GACd5W,WAAYqW,GAAarW,WACzB0D,qBAAsB/rB,GAAM+rB,qBAC5B/vB,OAAQkiC,GAZV,kEAeF,kBAAC/K,GAAD,CACEjH,KAAMuF,GACNxE,YAAaA,GACblc,MAAOpF,GAAE,uBACTgY,YAAahY,GAAE,6BACf8c,aAAcnI,GACd0P,WAAYrkB,GAAE,iBACdokB,WAAW,SAPb,gEAaAkD,GAAiB7pB,UAAOgM,IAAV,sFAAGhM,CAAH,6FAOhB,qBAAGmd,MAAkBxsB,aAApB,MAMD,SAAAuH,GAAK,OACLA,EAAM0I,WACNrQ,cADA,kEAOEu5B,GAAa9pB,UAAOgM,IAAV,kFAAGhM,CAAH,yBAIV4pB,GAAiB5pB,UAAOgM,IAAV,sFAAGhM,CAAH,wEAKhB,qBAAGmd,MAAkBxsB,aAApB,SAQCwlC,GAAmBn2B,UAAOgM,IAAV,wFAAGhM,CAAH,qKAehBqpB,GAAgBrpB,UAAO0Z,EAAV,qFAAG1Z,CAAH,4HASf,SAAA9H,GAAK,OACLA,EAAMlD,OACNzE,cADA,kCC30CEsmC,GAAevjC,EAAe,WAC9BwjC,GAAmBxjC,EAAe,iBAClCyjC,GAAoBzjC,EAAe,kBACnCsmB,GAAYtmB,EAAe,UAC3B0jC,GAAe1jC,EAAe,aAE9B2jC,GAAiB3jC,EAAe,gBAChC4jC,GAAa5jC,EAAe,iBAC5B6jC,GAAgB7jC,EAAe,eAqDtBsD,GAjDD,CACZwgC,YAAa,SAAAr0B,GACX,OAAO9N,QAAQU,UAAU2B,MAAK,WAC5B,OAAO5C,IAAMuC,IAAI4/B,GAAV,eACF9zB,QAITunB,kBAAmB,SAAAvnB,GACjB,OAAO9N,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAI6/B,GAAkB/zB,OAElEs0B,mBAAoB,SAAAt0B,GAClB,OAAO9N,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAI8/B,GAAmBh0B,OAEnEu0B,sBAAuB,kBACrBriC,QAAQie,IAAI,CAACxe,IAAMuC,IAAI2iB,IAAYllB,IAAMuC,IAAI+/B,OAC/CrU,qBAAsB,SAAA5f,GAAO,OAC3B9N,QAAQU,UAAU2B,MAAK,kBACrB5C,IAAMuC,IApBiB2rB,6CAoBvB,eACK7f,EADL,CAEEvM,OAAO,eACFuM,EAAQvM,OADP,GAED3C,WAIX02B,UAAW,SAACxnB,EAASuG,GAAV,OACTrU,QAAQU,UAAU2B,MAAK,WACrB,IAAIigC,EAAW,KAQf,MAPa,WAATjuB,EACFiuB,EAAWN,GACO,YAAT3tB,EACTiuB,EAAWL,GACO,UAAT5tB,IACTiuB,EAAWJ,IAEG,MAAZI,EACK7iC,IAAM+C,KAAK8/B,EAAUx0B,EAAS,CACnChO,QAAS,CACP,eAAgB,yBAIf,IAAIlD,UAEf8hC,mBAAoB,SAAC51B,EAAIuL,GAAL,OAClBrU,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAN,UAAa3D,EAAb,YAA6BgW,EAA7B,YAAqCvL,EAArC,W,6oBCNjC,IAu2BewH,kBAAK3I,IAv2BH,SAAC,GAA2B,EAAzBlD,SAA0B,IAAbxB,EAAY,8BAChB6C,qBAAWC,IAA9BlB,EADmC,EACnCA,QAASD,EAD0B,EAC1BA,MACFyhB,EAAYvgB,qBAAWwgB,IAA9B1hB,MAEA8C,EAAuBzE,EAAvByE,mBAEA4F,EAAMC,cAAND,EACAnJ,EAAS8xB,cAAT9xB,KACFtD,EAAUq1B,cAR2B,EAUTlwB,oBAAS,GAVA,mBAUpC2F,EAVoC,KAUzB2mB,EAVyB,OAWnBtsB,oBAAS,GAXU,mBAWpC6nB,EAXoC,KAW9BsC,EAX8B,OAYXnqB,mBAAS,MAZE,mBAYpCuR,EAZoC,KAY1BoK,EAZ0B,OAaG3b,mBAAS,MAbZ,mBAapC65B,EAboC,KAanBC,EAbmB,OAeD95B,mBAAS,MAfR,mBAepC0wB,EAfoC,KAerBnE,EAfqB,OAiBmBvsB,mBAAS,CACrEugB,MAAO,GACPiH,SAAU,KAnB+B,mBAiBpC+U,EAjBoC,KAiBXC,EAjBW,OAsBDx8B,mBAAS,CACjDu3B,cAAe,EACfD,SAAU,GACVpvB,SAAS,IAzBgC,mBAsBpCu0B,EAtBoC,KAsBrBC,EAtBqB,KA4BrCC,EAAchT,mBAAQ,kBAAMpf,KAAS,IACrCqyB,EAAWjT,mBAAQ,yBAAM8S,QAAN,IAAMA,OAAN,EAAMA,EAAenF,WAAU,QACtDmF,QADsD,IACtDA,OADsD,EACtDA,EAAenF,WAEXuF,EAAgBlT,mBACpB,iBAAO,CACLhW,IAAK,GACLxN,KAAM,GACNkI,KAAM,GACN+hB,gBAAiB,GACjB0M,cAAe,GACf5hC,OAAQ,GACRnD,KAAM,MAER,IA1CyC,EA6CbiI,mBAAS68B,GA7CI,mBA6CpC1f,EA7CoC,KA6C3BkT,EA7C2B,QA8CPrwB,mBAAS,CAAEme,OAAQ,EAAGzH,MAAO,KA9CtB,qBA8CpChC,GA9CoC,MA8CxBkM,GA9CwB,SA+CP5gB,oBAAS,GA/CF,qBA+CpCqqB,GA/CoC,MA+CxBiG,GA/CwB,SAiDjBtwB,mBAAS,IAjDQ,qBAiDpC0M,GAjDoC,MAiD7B0d,GAjD6B,MAmDrCuG,GAA0BzwB,iBAAO,MAnDI,GAoDGF,mBAAS,IApDZ,qBAoDpC4wB,GApDoC,MAoDnBC,GApDmB,SAqDO7wB,mBAAS,IArDhB,qBAqDpC8wB,GArDoC,MAqDjBC,GArDiB,SAsDK/wB,mBAAS,MAtDd,qBAsDpCkpB,GAtDoC,MAsDlBC,GAtDkB,SAwDHnpB,mBAAS,MAxDN,qBAwDpC+8B,GAxDoC,MAwDtBC,GAxDsB,SA0DPh9B,mBAAS,MA1DF,qBA0DpCi9B,GA1DoC,MA0DxBC,GA1DwB,MA2DrClM,GAAkB9wB,iBAAO,MA3DY,GA6DLF,mBAAS,CAC7CgkB,YAAY,EACZD,cAAc,IA/D2B,qBA6DpCE,GA7DoC,MA6DvBC,GA7DuB,MAkErCiZ,GAAyBj9B,iBAAO,MAChCk9B,GAA0Bl9B,iBAAO,MACjCm9B,GAA0Bn9B,iBAAO,MApEI,GAsETF,mBAAS,CACzC2T,IAAK,GACLxN,KAAM,GACNpO,KAAM,KAzEmC,qBAsEpCgxB,GAtEoC,MAsEzBC,GAtEyB,SA2EFhpB,mBAAS,CAChD2T,IAAK,GACLxN,KAAM,GACNpO,KAAM,KA9EmC,qBA2EpCkxB,GA3EoC,MA2ErBsB,GA3EqB,SAiFKvqB,mBAAS,MAjFd,qBAiFpC45B,GAjFoC,MAiFlBzC,GAjFkB,SAkFfn3B,oBAAS,GAlFM,qBAkFpC6sB,GAlFoC,MAkF5B4D,GAlF4B,SAoFLzwB,oBAAS,GApFJ,qBAoFpCixB,GApFoC,MAoFvBC,GApFuB,MAsFrCC,GAAiBpmB,uBACrB,SAACjU,EAAK6H,GACJ0xB,EAAW,eACNlT,EADK,gBAEPrmB,EAAM6H,OAGX,CAACwe,IAGGiU,GAA2BrmB,uBAC/B,SAACU,EAAU9M,GACTqqB,GAAa,eACRD,GADO,gBAETtd,EAAW9M,KAEdwyB,GAAe1lB,EAAU9M,KAE3B,CAACoqB,GAAWoI,KAGdxwB,qBAAU,WACgC,OAApCgwB,GAAwBtwB,SAC1BoqB,aAAakG,GAAwBtwB,SAEvCswB,GAAwBtwB,QAAU1F,YAAW,WAC3Cg2B,GAAwBtwB,QAAU,KAC9B1E,GAAM+rB,sBACR/rB,GACG+rB,qBAAqB,CACpBnsB,OAAQ,CAAEmvB,EAAGoG,GAAmBj4B,OAAQ,YAEzCwD,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACR03B,GAAmB13B,QAEnB03B,GAAmB,OAGtBzzB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdwzB,GAAmB,SAGxB,OACF,CAACC,KAEJ,IAAMwM,GAA4BvyB,uBAChC,SAACusB,EAAU/jB,GACT,GACc,MAAZ+jB,GACe,MAAfA,EAASx0B,IACe,MAAvBw0B,EAAS/jB,YAAoC,MAAdA,EAMhC4jB,GAAoB,MACpB2C,EAAmB,MACnBxN,GAAa,GACbgE,IAAc,GACdz1B,EAAQqC,KAAR,UAAgBiB,QAThB,CACA,IAAMkQ,EAAOipB,EAAS/jB,YAAcA,EACpC4jB,GAAoBG,GACpBz8B,EAAQqC,KAAR,UAAgBiB,GAAhB,OAAuBkQ,EAAvB,YAA+BipB,EAASx0B,GAAxC,SASJ,CAACjI,EAASsD,IAGNwuB,GAAc5hB,uBAAY,WAC9BgmB,GAAqB,IACrB5H,GAAoB,MACpB0H,GAAmB,MAClB,IAEHlwB,qBAAU,WACRhF,GACG0gC,wBACAhgC,MAAK,SAAA1F,GAAa,IAAD,cACuBA,EADvB,GACT4mC,EADS,KACK5P,EADL,KAGO,MAArB4P,EAAapkC,MACgB,MAA7BokC,EAAapkC,KAAK2nB,SACK,MAAvB6M,EAAex0B,MACfw0B,EAAex0B,KAAK2nB,SAEpB0b,EAA2B,CACzBjc,MAAM,aAAKgd,EAAapkC,KAAK2nB,SAC7B0G,SAAS,aAAKmG,EAAex0B,KAAK2nB,cAIvC1jB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdm/B,EAA2B,CACzBjc,MAAO,GACPiH,SAAU,UAIf,CAACoS,KAEJj5B,qBAAU,WACgC,OAApC08B,GAAwBh9B,SAC1BoqB,aAAa4S,GAAwBh9B,SAGvCg9B,GAAwBh9B,QAAU1F,YAAW,WAC3C0iC,GAAwBh9B,QAAU,KAClC1E,GACG0zB,kBAAkB,CACjB9zB,OAAQ,CAAE4K,KAAyB,KAAnB4iB,GAAUhxB,KAAcgxB,GAAUhxB,KAAO,SAE1DsE,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRoxB,IAAgB,SAAAtB,GAAa,sBACxBA,EADwB,CAE3BlxB,KAAMoB,EAAK2nB,kBAGbyJ,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBlxB,KAAM,WAG/DqF,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdktB,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBlxB,KAAM,aAE/D,OACF,CAACgxB,GAAUhxB,OAEd4I,qBAAU,WAC+B,OAAnCw8B,GAAuB98B,SACzBoqB,aAAa0S,GAAuB98B,SAGtC88B,GAAuB98B,QAAU1F,YAAW,WAC1CwiC,GAAuB98B,QAAU,KACjC1E,GACGygC,mBAAmB,CAClB7gC,OAAQ,CAAEoY,IAAuB,KAAlBoV,GAAUpV,IAAaoV,GAAUpV,IAAM,SAEvDtX,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRoxB,IAAgB,SAAAtB,GAAa,sBACxBA,EADwB,CAE3BtV,IAAKxa,EAAK2nB,kBAGZyJ,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBtV,IAAK,WAG9DvW,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdktB,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBtV,IAAK,aAE9D,OACF,CAACoV,GAAUpV,MAEdhT,qBAAU,WACgC,OAApCy8B,GAAwB/8B,SAC1BoqB,aAAa2S,GAAwB/8B,SAGvC+8B,GAAwB/8B,QAAU1F,YAAW,WAC3CyiC,GAAwB/8B,QAAU,KAClC1E,GACGygC,mBAAmB,CAClB7gC,OAAQ,CAAE4K,KAAyB,KAAnB4iB,GAAU5iB,KAAc4iB,GAAU5iB,KAAO,SAE1D9J,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRoxB,IAAgB,SAAAtB,GAAa,sBACxBA,EADwB,CAE3B9iB,KAAMhN,EAAK2nB,kBAGbyJ,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyB9iB,KAAM,WAG/D/I,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdktB,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyB9iB,KAAM,aAE/D,OACF,CAAC4iB,GAAU5iB,OAEdxF,qBAAU,WACgB,MAApBi5B,KACF4D,KACA5c,IAAc,iBAAO,CAAEzC,OAAQ,EAAGzH,MAAO,UAG1C,CAAC2T,KAEJ,IAAMoT,GAAyB1yB,uBAC7B,SAACjI,EAAIuL,GACH,IAAIqvB,EACJ,OAAQrvB,GACN,IAAK,SACHqvB,EAAU,UACV,MACF,IAAK,UACHA,EAAU,WACV,MACF,IAAK,mBACHA,EAAU,SACV,MACF,QACEA,EAAU,KAGC,MAAXA,GACF/hC,GACG+8B,mBAAmB51B,EAAI46B,GACvBrhC,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACFwkC,EAAevkC,KAAKsH,MACxBtH,KAAKC,UAAUojC,EAAcnF,WAEzBloB,EAAQuuB,EAAahc,WAAU,SAAA7jB,GAAE,OAAIA,EAAGgF,KAAOA,KACjDsM,GAAS,IACXuuB,EAAavuB,GAASjW,EACtBujC,EAAiB,eACZD,EADW,CAEdnF,SAAUqG,UAKjBvgC,OAAM,SAAAC,GAAG,OAAIC,QAAQC,IAAI,+BAAgC,CAAEF,aAGlE,CAACo/B,IAGGe,GAAgBzyB,uBAAY,WAChC2xB,EAAiB,eAAKD,EAAN,CAAqBv0B,SAAS,KAC9CooB,IAAc,GAEd30B,GACGwgC,YAAY,CACX5gC,OAAO,eACF,CACDmb,MAAO,OAFL,GAIDyG,KAGN9gB,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRujC,EAAiB,CACfnF,cAAep+B,EAAKqd,MACpB8gB,SAAUn+B,EAAK2nB,QACf5Y,SAAS,SAGXw0B,EAAiB,CACfnF,cAAe,EACfD,SAAU,GACVpvB,SAAS,OAId9K,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdq/B,EAAiB,CAAEnF,cAAe,EAAGD,SAAU,GAAIpvB,SAAS,IACjD,MAAP7K,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,mBAGb,CAACoiB,EAASte,EAAS49B,IAEhBjQ,GAAUzhB,uBAAY,SAAC6yB,EAAOnyB,EAAU8H,GAC5C,GAAa,MAATqqB,EAAe,CACjB,IAAyB,WAArBA,EAAMrqB,YAA0C,WAAfA,IAClB,WAAb9H,EACF,OAAO,EAGX,GAAmB,cAAfmyB,EAAMpQ,KAAsB,CAAC,IAAD,EACxBnf,EAAOuvB,EAAMrqB,YAAcA,EACjC,cAAOjc,QAAP,IAAOA,GAAP,UAAOA,EAA6B+W,UAApC,aAAO,EAAoCsB,SAASlE,GAEtD,OAAO,EAET,OAAO,IACN,IAEG6lB,GAAevmB,uBAAY,WAC/BslB,EAAWwM,GACX7T,GAAa,CACXrV,IAAK,GACLxN,KAAM,GACNpO,KAAM,KAERu4B,IAAc,KACb,CAACuM,IAEEgB,GAAiB9yB,uBAAY,SAAA/C,GACjCg1B,GAAgBh1B,EAAM81B,iBACrB,IAEGC,GAAkBhzB,uBAAY,WAClCiyB,GAAgB,QACf,IAEGgB,GAAkBjzB,uBACtB,SAAAkzB,GACEf,GAAce,GACS,MAAnBjN,IAAsD,MAA3BA,GAAgB3wB,UAC7C2wB,GAAgB3wB,QAAQmxB,QACxBuM,QAGJ,CAAC/M,GAAiB+M,KAGd1Z,GAAetZ,uBACnB,SAAM/C,GAAN,iBAAAhN,EAAAC,OAAA,kEAAAD,EAAA,MAC6BgN,EAAM9B,OAAOurB,MAAM,IADhD,UAEsB,OADdC,EADR,SAE4C,MAAduL,GAF9B,wBAGI/Y,GAAe,CACbF,YAAY,EACZD,cAAc,IAEhB2Y,EAAiB,eAAKD,EAAN,CAAqBv0B,SAAS,MAExCypB,EAAW,IAAIC,UACZC,OAAO,OAAQH,GAV5B,YAAA12B,EAAA,MAWUW,GACH2zB,UAAUqC,EAAUsL,IACpB5gC,MAAK,SAAA1F,GACJutB,GAAe,eACVD,GADS,CAEZD,YAAY,KAEU,MAApBrtB,EAASuE,QACXkrB,GAAc9e,EAAE,6BAGnBlK,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd6mB,GAAe,eACVD,GADS,CAEZD,YAAY,KAEdoC,GAAY9e,EAAE,wBACH,MAAPjK,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,iBAGXszB,SAAQ,kBAAMiC,IAAc,OAjCnC,wCAoCA,CAAC2M,GAAYR,EAAexY,GAAaplB,EAASyI,IAG9Cwa,GAAmB/W,uBACvB,SAAAgX,GAMK,IAAD,EALF,GACS,MAAPA,IACgB,qBAAfA,EAAIC,QACY,WAAfD,EAAIC,QACW,YAAfD,EAAIC,QAEN,GACsB,MAApB4X,KACG,OAAH7X,QAAG,IAAHA,OAAA,EAAAA,EAAKC,UAAW4X,GAAiBrmB,aAC9B,OAAHwO,QAAG,IAAHA,GAAA,UAAAA,EAAKE,eAAL,eAAcnf,MAAO82B,GAAiB92B,GAErB,WAAbif,EAAI1T,KACNoiB,IAAW5D,IACW,WAAb9K,EAAI1T,MAAoC,MAAf0T,EAAIE,SACtCkV,GAAoB,WAEjB,GAAwB,MAApByC,GAA0B,CAAC,IAAD,EAClB,QAAb7X,EAAI1T,MAA+B,WAAb0T,EAAI1T,KAC5BmvB,KACsB,WAAbzb,EAAI1T,OAAJ,OAAyB0T,QAAzB,IAAyBA,GAAzB,UAAyBA,EAAKE,eAA9B,aAAyB,EAAcnf,IAChD26B,GAAuB1b,EAAIE,QAAQnf,GAAIif,EAAIC,QAE3Cwb,QAKR,CAACA,GAAeC,GAAwB7D,GAAkB/M,KAG5DlsB,qBAAU,WACe,MAAnB0f,EAAQ3pB,SACVorB,GAAiBzB,EAAQ3pB,WAG1B,CAAC2pB,EAAQ3pB,UAEZ,IAAMk2B,GAAoBkF,GAAmBlzB,EAAMjB,MAE7CugC,GAAoBvU,mBACxB,kBACE8F,GAAc5xB,KAAI,SAAAC,GAAE,sBACfA,EADe,CAElBwK,MAAOhB,EAAE,SAAD,OAAUxJ,EAAGwK,eAEzB,CAAChB,IAGG62B,GAAkBxU,mBACtB,kBACE4F,GAAY1xB,KAAI,SAAAC,GAAE,sBACbA,EADa,CAEhBwK,MAAOhB,EAAE,SAAD,OAAUxJ,EAAGwK,eAEzB,CAAChB,IAGG0qB,GAA+BjnB,uBACnC,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,OAAI0zB,GAAyBjrB,EAAMzI,MAC5C,CAAC0zB,KAGGc,GAAqBnnB,uBACzB,SAAA5E,GAAI,OAAI,SAACzI,EAAG+rB,GAAJ,OAAiB0H,GAAehrB,EAAMsjB,MAC9C,CAAC0H,KAGGiN,GAA0BrzB,uBAC9B,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,aAAIyzB,GAAehrB,EAAD,OAAOzI,QAAP,IAAOA,GAAP,UAAOA,EAAGwI,cAAV,aAAO,EAAWvH,UAC7C,CAACwyB,KAEGkB,GAAgB1I,mBACpB,kBACE,kBAAC,IAAMvU,SAAP,CAAgBte,IAAI,kBAClB,kBAACqT,GAAD,CACExL,MAAOoqB,GAAUpV,IACjBlO,SAAUusB,GAA6B,OACvCpqB,WAAYuV,EAAQxJ,IACpB9L,cAAeqqB,GAAmB,OAClCpqB,QAASmhB,GAActV,IACvBrL,MAAOhB,EAAE,aACTnB,KAAK,MACLU,QAAQ,WACR/D,GAAG,MATL,uDAWA,kBAACqH,GAAD,CACExL,MAAOoqB,GAAU5iB,KACjBV,SAAUusB,GAA6B,QACvCpqB,WAAYuV,EAAQhX,KACpB0B,cAAeqqB,GAAmB,QAClCpqB,QAASmhB,GAAc9iB,KACvBmC,MAAOhB,EAAE,cACTnB,KAAK,OACLU,QAAQ,WACR/D,GAAG,OATL,uDAWA,kBAACqH,GAAD,CACExL,MAAOoqB,GAAUhxB,KACjB0N,SAAUusB,GAA6B,QACvCpqB,WAAYuV,EAAQplB,KACpB8P,cAAeqqB,GAAmB,QAClCpqB,QAASmhB,GAAclxB,KACvBuQ,MAAOhB,EAAE,cACTnB,KAAK,OACLU,QAAQ,WACR/D,GAAG,OATL,uDAWA,kBAAC4N,GAAD,CACE/R,MAAOwe,EAAQ9O,KACf5I,SAAU24B,GAAwB,QAClC91B,MAAOhB,EAAE,cACTQ,QAASq2B,GACTr7B,GAAG,OALL,iDAOA,kBAAC4N,GAAD,CACE/R,MAAOwe,EAAQjiB,OACfuK,SAAU24B,GAAwB,UAClC91B,MAAOhB,EAAE,gBACTQ,QAASo2B,GACTp7B,GAAG,SALL,oDASJ,CACEimB,GACA5L,EACA8L,GAAclxB,KACdkxB,GAAc9iB,KACd8iB,GAActV,IACdrM,EACA42B,GACAC,GACAC,GACApM,GACAE,KAIEmM,GAActzB,uBAAY,WAC9BumB,KACAJ,IAAe,KACd,CAACI,KAEEgN,GAAcvzB,uBAAY,WAC9BulB,IAAc,GACdY,IAAe,KACd,IAEGsB,GAAiB7I,mBACrB,kBACE,kBAAC,IAAMvU,SAAP,CAAgBte,IAAI,mBAClB,kBAACyuB,GAAD,CAAcvY,QAASqxB,GAAa7uB,SAAUyU,GAAYD,WAA1D,gDACG1c,EAAE,gBAEL,kBAACie,GAAD,CACElX,KAAK,UACLrB,QAASsxB,GACT9uB,SAAUyU,GAAYD,WAHxB,gDAKG1c,EAAE,mBAIT,CAAC2c,GAAYD,WAAY1c,EAAGg3B,GAAaD,KAGrCE,GAAyBxzB,uBAC7B,kBAAMuyB,GAA0B,QAChC,CAACA,KAGGkB,GAAkB7U,mBACtB,iBAAM,CACJ,CACExrB,KAAMA,EACNmK,MAAO,kBACP0E,QAASuxB,IAEX,CACEpgC,KAAM,GACNmK,MAAM,GAAD,OAAKhB,EAAEoF,IAAP,YACiB,MAApBktB,GAAA,aAAiCA,GAAiBjmB,KAAQ,QAIhE,CAACimB,GAAkBz7B,EAAMuO,GAAO6xB,GAAwBj3B,IAGpDqrB,GAAe5nB,uBAAY,kBAAMof,GAAQ,KAAO,IAEhDyI,GAAUjJ,mBACd,kBACsB,MAApBiQ,IAA+C,MAAnBC,EACK,OAAd,OAAfA,QAAe,IAAfA,OAAA,EAAAA,EAAiBtoB,UACf,CAACsoB,GACD,KACF+C,IACN,CAAChD,GAAkBC,EAAiB+C,IAGhCzkB,GAAYwR,mBAChB,kBACsB,MAApBiQ,IACmB,MAAnBC,GAC+B,OAAhB,OAAfA,QAAe,IAAfA,OAAA,EAAAA,EAAiBtmB,aACe,YAAjB,OAAfsmB,QAAe,IAAfA,OAAA,EAAAA,EAAiBtmB,cACnB,CAACqmB,GAAkBC,IAGfrhB,GAAcmR,mBAClB,kBACsB,MAApBiQ,IACmB,MAAnBC,GAC+B,OAAhB,OAAfA,QAAe,IAAfA,OAAA,EAAAA,EAAiBtmB,aACe,aAAjB,OAAfsmB,QAAe,IAAfA,OAAA,EAAAA,EAAiBtmB,cACnB,CAACqmB,GAAkBC,IAGf5c,GAAgB0M,mBACpB,kBACmC,OAAjB,OAAhBT,SAAgB,IAAhBA,QAAA,EAAAA,GAAkBU,aACd,CACA,CAACV,GAAiBU,YAAY,GAAIV,GAAiBU,YAAY,IAC/D,CAACV,GAAiBU,YAAY,GAAIV,GAAiBU,YAAY,KAE/D,OACN,QAACV,SAAD,IAACA,QAAD,EAACA,GAAkBU,cAGfL,GAAiBxe,uBAAY,SAAA/C,GAAK,OAAI+oB,GAAqB/oB,KAAQ,IACnEwhB,GAAsBze,uBAC1B,SAAC/C,EAAOyhB,GAAR,OAAqBN,GAAoBM,KACzC,IAGI1hB,GAAiBgD,uBAAY,SAAAtC,GAAM,OAAIA,EAAOE,cAAa,IAE3D+gB,GAAiBC,mBACrB,iBAAO,CACLhrB,MAAOmyB,GACPrrB,SAAU8jB,GACV3hB,WAAYshB,GACZrhB,cAAe2hB,GACf1hB,QAAS8oB,GACTtoB,MAAOhB,EAAE,uBACTS,eAAgBA,MAElB,CACE+oB,GACA5H,GACAnhB,GACA6oB,GACArH,GACAC,GACAliB,IAIEurB,GAAoB9nB,uBAAY,kBAAMulB,IAAc,KAAO,IAE3DwC,GAAiB/nB,uBAAY,kBAAMmmB,IAAe,KAAQ,IAC1D6B,GAAgBhoB,uBAAY,kBAAMmmB,IAAe,KAAO,IAExDuN,GAAsB9U,mBAC1B,iBAAM,CACJ,CAAErhB,MAAOhB,EAAE,iBAAkB3I,MAAO,UACpC,CAAE2J,MAAOhB,EAAE,kBAAmB3I,MAAO,WACrC,CAAE2J,MAAOhB,EAAE,gBAAiB3I,MAAO,SACnC,CAAE2J,MAAOhB,EAAE,mBAAoB3I,MAAO,eAExC,CAAC2I,IAGGsR,GAAkB+Q,mBAAQ,kBAAMhkB,GAAa6mB,GAAQ,cAAa,CACtE7mB,EACA6mB,KAGF,OACE,kBAAC,GAAD,4CACE,kBAAC,GAAD,kDACE,kBAACyG,GAAD,CAAkB/M,MAAOsY,GAAzB,qDACqB,MAApB5E,IAA4BhN,IAC3B,kBAAC,GAAD,kDACE,kBAACrH,GAAD,CACElX,KAAK,UACLrB,QAAS2lB,GACTnjB,SAAUyU,GAAYD,WAHxB,gDAKG1c,EAAE,eAEL,kBAACie,GAAD,CACElX,KAAK,UACLrB,QAAS6wB,GACTruB,SAAUyU,GAAYD,WACtBtV,QAASpH,EAAE,cAJb,gDAME,kBAAC4rB,GAAD,CAAY/xB,OAAQ,GAAID,MAAO,GAAIc,KAAK,qBAAxC,gDAEF,kBAAC08B,GAAD,CACE52B,QAAS22B,GACTE,SAAU5B,GACVlV,KAAM/zB,QAAQipC,IACd/U,QAAS+V,GACT/wB,QAASgxB,GALX,+CAOA,2BACE3vB,KAAK,OACLjJ,IAAK4rB,GACLvrB,SAAU4e,GACV8O,OAAO,6GACPjvB,MAAO,CAAE0E,QAAS,QALpB,2CAOElH,EAAmBT,WACnB,kBAACskB,GAAD,CACE7W,QAASpH,EAAE,WACX+G,KAAK,UACLrB,QAAS+lB,GAHX,gDAKE,kBAAC,KAAD,CACE/oB,MAAM,YACNnD,QAAQ,MACRusB,UACEh6B,KAAKC,UAAU8jB,KAAa/jB,KAAKC,UAAUwjC,GAJ/C,yCAOE,kBAACxJ,GAAD,CACElyB,OAAQ,GACRD,MAAO,GACPc,KAAK,qBAHP,mDAWS,MAApB43B,IAA4Bl4B,EAAmBT,WAC9C,kBAAC,GAAD,mDACE,kBAAC,GAAD,+CAAa,CAACoxB,GAAeG,MAGjC,kBAAC,GAAD,sDACE,kBAAC,GAAD,+CACE,kBAAC,GAAD,CACEr5B,KAAMy5B,GACNte,aAAW,EACXjG,KAAK,SACLuK,gBAAiBA,GACjB+C,YAAaA,EACbpK,SAAUA,EACV4G,UAAWA,GACXK,YAAaA,GACbK,SAAU+gB,GACV1c,aAActE,GACdyF,OAAQqL,GACRzM,cAAeA,GACfE,QAASA,EAbX,kDAgBDvE,IAAmB,oCAAG8X,IAEzB,kBAAC,IAAD,2CACE,kBAAC,IAAD,CAAOvyB,KAAI,UAAKA,EAAL,cAAuBu1B,OAAK,EAAvC,yCACE,kBAACkL,GAAD,CACEzH,oBAAqBmG,GACrB1D,iBAAkBA,GAClBpK,oBAAqBA,GACrB7pB,UAAWA,EACX2mB,aAAcA,EACd3Q,YAAaA,EACbpK,SAAUA,EACVme,eAAgBA,GAChB8H,aAAc+E,EAAwBhc,MACtCkX,gBAAiB8E,EAAwB/U,SACzC4C,SAAUA,GACVmC,iBAAkBA,EAClBC,QAASA,GACTqN,gBAAiBA,EACjBC,mBAAoBA,EACpBnN,YAAaA,GACbC,kBAAmBA,GACnBC,OAAQA,GACR+C,oBAAqBA,GAnBvB,qDAsBF,kBAAC,IAAD,CAAOzxB,KAAMA,EAAMu1B,OAAK,EAAxB,yCACE,kBAAC,GAAD,CACExrB,QAASu0B,EAAcv0B,QACvBovB,SAAUsF,EACVrF,cAAekF,EAAclF,cAC7BhtB,QAASoyB,EACThN,kBAAmBA,GACnBwH,oBAAqBmG,GACrBzV,KAAMA,EACNsC,QAASA,EACTuF,eAAgBA,GAChB8H,aAAc+E,EAAwBhc,MACtCkX,gBAAiB8E,EAAwB/U,SACzC4C,SAAUA,GACV1V,WAAYA,GACZkM,cAAeA,GACfyJ,WAAYwI,GACZjD,oBAAqBA,GAhBvB,kDAmBF,kBAAC,IAAD,CAAOzxB,KAAK,IAAZ,yCACE,kBAAC,IAAD,CAAUsV,GAAItV,EAAd,+CAGJ,kBAAC,GAAD,CACE0pB,KAAMoJ,GACNjJ,QAAS8K,GACT9D,OAAQqD,GACRnD,QAASsD,GACT9lB,MAAOpF,EAAE,WALX,sDAaA5C,GAAUK,UAAOgM,IAAV,wEAAGhM,CAAH,yFAOT,qBAAGmd,MAAkBxsB,aAApB,SAKC+9B,GAAa1uB,UAAOgM,IAAV,2EAAGhM,CAAH,8CAMVyuB,GAAoBzuB,UAAOgM,IAAV,kFAAGhM,CAAH,sIAYjBiuB,GAAgBjuB,UAAOgM,IAAV,8EAAGhM,CAAH,2EAMf,qBAAGmd,MAAkBxsB,aAApB,SAOC4vB,GAAgBvgB,UAAOgM,IAAV,8EAAGhM,CAAH,oGAKf,qBAAGmd,MAAkBxsB,aAApB,SAOC49B,GAAiBvuB,UAAOgM,IAAV,+EAAGhM,CAAH,2BAIdwuB,GAAaxuB,UAAOgM,IAAV,2EAAGhM,CAAH,sBAEZ,qBAAGmd,MAAkBxsB,aAApB,SCx7BU6U,GAlCC,CACd,CACEzT,IAAK,KACLwR,MAAO,YAET,CACExR,IAAK,YACLwR,MAAO,cAET,CACExR,IAAK,sBACLwR,MAAO,wBACP6D,OAAQ,gBAAG7E,EAAH,EAAGA,EAAM2E,EAAT,4BAAuB3E,EAAE,SAAD,OAAU2E,EAAQlU,KAAKkc,mBAEzD,CACEnd,IAAK,WACLwR,MAAO,kBACP6D,OAAQ,gBAAG7E,EAAH,EAAGA,EAAM2E,EAAT,4BAAuB3E,EAAE,SAAD,OAAU2E,EAAQ+H,aAEpD,CACEld,IAAK,aACLwR,MAAO,wBAET,CACExR,IAAK,eACLwR,MAAO,uBAET,CACExR,IAAK,YACLwR,MAAO,aACP6D,OAAQ,SAAAF,GAAO,OAAIkI,KAAOlI,EAAQ4yB,WAAWhmC,OjHHlB,uBkH3BzBimC,GAAazmC,EAAe,WAcnBsD,GAZD,CACZojC,UAAW,SAAAj3B,GACT,OAAO9N,QAAQU,UAAU2B,MAAK,WAC5B,OAAO5C,IAAMuC,IAAI8iC,GAAYh3B,OAGjCk3B,gBAAiB,SAAAl8B,GAAE,OACjB9I,QAAQU,UAAU2B,MAAK,WACrB,OAAO5C,IAAMuC,IAAI8iC,GAAU,UAAMh8B,EAAN,WCsBlBm8B,GAhCkB,SAACC,EAAUC,GAC1C,IAAIC,EAAUjrB,KAAOgrB,GAErB,OAAQD,GACN,IAAK,OACHE,EAAUjrB,KAAOirB,GACdC,MAAM,QACNC,eAAenrB,QACdA,KAAOirB,GAASC,MAAM,QACtBlrB,OACJ,MACF,IAAK,QACHirB,EAAUjrB,KAAOirB,GACdC,MAAM,SACNC,eAAenrB,QACdA,KAAOirB,GAASC,MAAM,SACtBlrB,OACJ,MACF,IAAK,MAKL,QACEirB,EAAUjrB,KAAOirB,GAASE,eAAenrB,QACrCA,KAAOirB,GACPjrB,OAGR,OAAOirB,G,6GCvBT,IAAMG,GAAgB,SAAAtiC,GAAK,OACzB,kBAACuiC,GAAD,iEACE,yBAAKt+B,MAAO,GAAIC,OAAQ,GAAIY,QAAQ,YAAYM,UAAWpF,EAAMoF,UAAjE,+CACE,0BACEL,KAAM/E,EAAM+E,MAAQ,8BACpBS,EAAE,uBAFJ,oDAQA+8B,GAAuBz6B,UAAOgM,IAAV,qFAAGhM,CAAH,yIAKd,SAAA9H,GAAK,OAAIA,EAAMkE,UAChB,SAAAlE,GAAK,OAAIA,EAAMiE,SACX,qBAAGmB,WAA6B,MA+DhCo9B,G,YA1Db,WAAaxiC,GAAQ,IAAD,8BAClB,4CAAMA,KAqBRyiC,mBAAqB,SAAA13B,GAEjB,EAAK23B,aACJ,EAAKA,WAAWt/B,QAAQu/B,SAAS53B,EAAM9B,SACxC,EAAK9H,MAAMypB,MAEX,EAAKpqB,SAAS,CAAEoqB,MAAM,KA1BxB,EAAKzpB,MAAQ,CACXypB,MAAM,GAER,EAAK8X,WAAa7iC,IAAMigB,YALN,E,gFAQA8iB,GACd3jC,KAAKe,MAAM6iC,kBAAoBD,EAASC,iBAC1C5jC,KAAKuB,SAAS,CAAEoqB,MAAM,M,0CAKxBkY,SAASv+B,iBAAiB,YAAatF,KAAKwjC,sB,6CAI5CK,SAASt+B,oBAAoB,YAAavF,KAAKwjC,sB,+BAatC,IAAD,OACA7X,EAAS3rB,KAAKkC,MAAdypB,KADA,EAE2B3rB,KAAKe,MAAhCwH,EAFA,EAEAA,KAAMhG,EAFN,EAEMA,SAAUqO,EAFhB,EAEgBA,OAExB,OACE,kBAAC,GAAD,CAAS1H,IAAKlJ,KAAKyjC,WAAnB,mDACE,kBAACK,GAAD,CACEnY,KAAMA,EACN7a,QAAS,kBAAM,EAAKvP,SAAS,CAAEoqB,MAAOA,KAFxC,+DAIE,kBAACoY,GAAD,CAAYnzB,OAAQA,EAApB,sDAA6BrI,GAC7B,kBAAC,GAAD,CACEpC,UAAWwlB,EAAO,cAAgB,YAClC7lB,KAAM6lB,EAAO,uBAAyB,8BAFxC,2DAKF,kBAACqY,GAAD,6DACE,kBAACC,GAAD,CAAgBj8B,MAAO,CAAEk8B,UAAWvY,EAAO,SAAW,OAAtD,0DACGppB,S,GAnDc3B,IAAMgC,WA6D3B4F,GAAUK,UAAOgM,IAAV,wEAAGhM,CAAH,sDAOPm7B,GAAmBn7B,UAAOgM,IAAV,iFAAGhM,CAAH,+FAKlB,qBAAGmd,MAAkBxsB,aAApB,SAMCyqC,GAAiBp7B,UAAOgM,IAAV,+EAAGhM,CAAH,4DAOdi7B,GAAsBj7B,UAAOgM,IAAV,oFAAGhM,CAAH,uWAQb,qBAAGod,UAWX,SAAAllB,GAAK,OACLA,EAAM4qB,MACNvyB,cADA,+GAWE2qC,GAAal7B,UAAOsF,KAAV,2EAAGtF,CAAH,sLAaZ,SAAA9H,GAAK,OACLA,EAAM6P,QACNxX,cADA,4CC3JW,eAA4B,EAAzBmJ,SAA0B,IAAbxB,EAAY,4BACjCgP,EAAyBhP,EAAzBgP,QAAS6a,EAAgB7pB,EAAhB6pB,YACTxf,EAAMC,cAAND,EAER,OACE,kBAAC,GAAD,CAAS0F,QAAS,kBAAM8Z,EAAY7a,IAApC,qDACE,kBAAC,GAAD,mDAAOA,EAAQnJ,IACf,kBAAC,GAAD,wDAAYmJ,EAAQ+L,WAApB,KACA,kBAAC,GAAD,kDAAM/L,EAAQlU,KAAKoO,MACnB,uEAEA,kBAAC,GAAD,oDAAQmB,EAAE,0BACV,kBAAC,GAAD,oDAAQA,EAAE,SAAD,OAAU2E,EAAQlU,KAAKkc,kBAEhC,kBAAC,GAAD,oDAAQ3M,EAAE,oBACV,kBAAC,GAAD,oDAAQA,EAAE,SAAD,OAAU2E,EAAQ+H,YAE3B,kBAAC,GAAD,oDAAQ1M,EAAE,wBACV,kBAAC,GAAD,oDAAQ2E,EAAQo0B,cAEhB,kBAAC,GAAD,oDAAQ/4B,EAAE,eACV,kBAAC,GAAD,oDAAQ6M,KAAOlI,EAAQ4yB,WAAWhmC,OrHET,uBqHGzB6L,GAAUK,UAAOgM,IAAV,8EAAGhM,CAAH,mSAiBPgiB,GAAOhiB,UAAO2gB,GAAV,2EAAG3gB,CAAH,iFAOJmiB,GAAMniB,UAAO0Z,EAAV,0EAAG1Z,CAAH,qEAMH0d,GAAQ1d,UAAO0Z,EAAV,4EAAG1Z,CAAH,yCAILoiB,GAAQpiB,UAAO0Z,EAAV,4EAAG1Z,CAAH,4EAMLiiB,GAAYjiB,UAAO0Z,EAAV,gFAAG1Z,CAAH,qE,+BCjEA,eAA4B,EAAzBtG,SAA0B,IAAbxB,EAAY,4BACjC3I,EAASiT,cAATjT,KACR,OAAIyM,YAEA,kBAACu/B,GAAD,4DACE,kBAACC,GAAD,sEACGpsB,KAAOlX,EAAM0B,OAAO9F,OtHkBJ,esHhBnB,kBAAC2nC,GAAD,CACE7hC,MAAOwV,KAAOlX,EAAM0B,OAAO9F,OtHcN,csHbrB4M,SAAU,SAAAuC,GAAK,OACS,MAAtBA,EAAM9B,OAAOvH,OACU,KAAvBqJ,EAAM9B,OAAOvH,OACb1B,EAAMwI,SAAS0O,KAAOnM,EAAM9B,OAAOvH,SACrC0P,KAAK,OANP,kEAYJ,kBAAC,GAAD,iBAAapR,EAAb,CAAoBwjC,OAA0B,OAAlBnsC,EAAKkF,SAAoB,KAAO,QAA5D,wDAIEkL,GAAUK,kBAAO27B,MAAV,0EAAG37B,CAAH,i6BAgCE,SAAA9H,GAAK,OAAIA,EAAMilB,MAAMye,SAWrB,SAAA1jC,GAAK,OAAIA,EAAMilB,MAAMye,SAWrB,SAAA1jC,GAAK,OAAIA,EAAMilB,MAAMye,SAW9BL,GAAgBv7B,UAAOgM,IAAV,gFAAGhM,CAAH,wGASby7B,GAAqBz7B,UAAO67B,MAAV,qFAAG77B,CAAH,2BAKlBw7B,GAA0Bx7B,UAAOsF,KAAV,0FAAGtF,CAAH,ka,qSCvG7B,IAAM87B,GAAqB,SAAC3B,EAAUC,GACpC,IAAIC,EAAUjrB,KAAOgrB,GAErB,OAAQD,GACN,IAAK,OACHE,EAAUjrB,KAAOirB,GACdC,MAAM,QACNC,eAAenrB,QACdA,KAAOirB,GAASC,MAAM,QACtBlrB,OACJ,MACF,IAAK,QACHirB,EAAUjrB,KACRirB,EAAQvmC,OAAO,YAAc,GAC7B,cACAymC,eAAenrB,QACbA,KAAOirB,EAAQvmC,OAAO,YAAc,GAAI,cACxCsb,OACJ,MACF,IAAK,MAKL,QACEirB,EAAUjrB,KAAOirB,GAASE,eAAenrB,QACrCA,KAAOirB,GACPjrB,OAGR,OAAOirB,GAGH0B,GAAuB,SAAC5B,EAAUC,GACtC,IAAM4B,EAAoB5sB,KAAOgrB,GAEjC,OAAQD,GACN,IAAK,OACH6B,EAAkBC,QAAQ,QAC1B,MACF,IAAK,QACHD,EAAkBC,QAAQ,SAO9B,OAAOD,GAiEM,eAA4B,EAAzBtiC,SAA0B,IAAbxB,EAAY,4BAEvC4lB,EAKE5lB,EALF4lB,KACAoe,EAIEhkC,EAJFgkC,YACApR,EAGE5yB,EAHF4yB,gBAKMvoB,EAAMC,cAAND,EA4DR,OACE,kBAAC,GAAD,sDACE,kBAAC45B,GAAD,2DACE,kBAACC,GAAD,iEACE,kBAAC,GAAD,uDAAW75B,EAAE,mBAAb,KACCuoB,EAAgBhyB,KAAI,SAAAC,GAAE,OACrB,kBAACsjC,GAAD,CACEtqC,IAAK,OAASgH,EAAGwK,MACjB4G,SAAU2T,EAAKqc,WAAaphC,EAAGa,MAC/BqO,QAAS,kBA/COrO,EA+CmBb,EAAGa,WA9ChDsiC,EAAY,eACPpe,EADM,CAETqc,SAAUvgC,EACV0iC,WAAYltB,KACV0sB,GAAmBliC,EAAOwV,KAAO0O,EAAKye,aACtCzoC,OvH/HuB,cuHgIzByoC,UAAWntB,KACT2sB,GAAqBniC,EAAOwV,KAAO0O,EAAKye,aACxCzoC,OvHlIuB,iBuHyHD,IAAA8F,GA4ClB,wDAKG2I,EAAExJ,EAAGwK,aA9ID,SAAC4J,EAAOqvB,EAAKrC,EAAUsC,EAAkBC,GAC1D,IAAIC,EAAa,OAEbC,EAAW,QAEf,OAAQzC,GACN,IAAK,OACHwC,EAAa,OACbC,EAAW,QACX,MACF,IAAK,QACHD,EAAa,UACbC,EAAW,SACX,MACF,IAAK,MACHD,EAAa,aACbC,EAAW,OACX,MACF,QACED,EAAa,OACbC,EAAW,QAIf,OACE,oCACE,kBAAC,GAAD,CACEz6B,WAAY,CAAEsI,UAAU,GACxBoyB,YAAa,SAACC,EAAaC,GAAd,OACXD,EAAYvC,eAAeiC,IAC3BM,EAAYvC,eAAenrB,SAC7B4tB,WAAYL,EACZM,YA9Ba,EA+BbrjC,MAAOwV,KAAOjC,GACdyvB,SAAUA,EACV9Z,MAAI,EACJpiB,SAAU,SAAA9G,GACJwV,KAAOotB,GAAKU,SAAS9tB,KAAOxV,IAC9B8iC,EAAWvC,EAAUvgC,GAErB6iC,EAAiB,YAAa7iC,EAAOugC,IAd3C,+DAkBA,kBAAC,GAAD,CACEh4B,WAAY,CAAEsI,UAAU,GACxBoyB,YAAa,SAACC,EAAaC,GAAd,OACXD,EAAYK,cAAchwB,IAC1B2vB,EAAYvC,eAAenrB,SAC7B4tB,WAAYL,EACZM,YAhDa,EAiDbL,SAAUA,EACV9Z,MAAI,EACJlpB,MAAOwV,KAAOotB,GACd97B,SAAU,SAAA9G,GACR6iC,EAAiB,aAAcrtB,KAAOxV,GAAQugC,IAXlD,gEAwGCiD,CACCtf,EAAKye,UACLze,EAAKwe,WACLxe,EAAKqc,UA9Ea,SAACpoC,EAAK6H,EAAOugC,GACnC+B,EAAY,eACPpe,EADM,gBAER/rB,EACS,eAARA,EACIqd,KAAO0sB,GAAmB3B,EAAUvgC,IAAQ9F,OvH1GzB,cuH2GnBsb,KAAOxV,GAAO9F,OvH3GK,oBuH+GV,SAACqmC,EAAUvgC,GAC5BsiC,EAAY,eACPpe,EADM,CAETye,UAAWntB,KAAOxV,GAAO9F,OvHlHA,cuHmHzBwoC,WAAYltB,KAAO0sB,GAAmB3B,EAAUvgC,IAAQ9F,OvHnH/B,sBuH2LzBqoC,GAAen8B,UAAOgM,IAAV,+EAAGhM,CAAH,mFAOZL,GAAUK,UAAOgM,IAAV,0EAAGhM,CAAH,iHAQT,qBAAGmd,MAAkBxsB,aAApB,SAMCyrC,GAAqBp8B,UAAOgM,IAAV,qFAAGhM,CAAH,0FAOpB,qBAAGmd,MAAkBxsB,aAApB,SASC+f,GAAW1Q,UAAOsF,KAAV,2EAAGtF,CAAH,+EAQRq8B,GAAar8B,UAAOsF,KAAV,6EAAGtF,CAAH,6JACL,SAAA9H,GAAK,OACZA,EAAMiS,SAAW,qBAAuB,wBACtB,SAAAjS,GAAK,OAAIA,EAAMiS,UAAY,0BAKrC,SAAAjS,GAAK,OAAKA,EAAMiS,SAAW,cAAgB,a,koBCnOvD,IAGevN,OAAe,YAA4B,EAAzBlD,SAA0B,IAAbxB,EAAY,4BAChD4B,EAAYiB,qBAAWC,IAAvBlB,QACOwhB,EAAYvgB,qBAAWwgB,IAA9B1hB,MACA8C,EAAuBzE,EAAvByE,mBAEFm7B,EAAgBlT,mBACpB,iBAAO,CACLyY,qBAAsB,GACtBpuB,SAAU,GACVstB,UAAWntB,OACR6sB,QAAQ,SACRnoC,OxH3BsB,cwH4BzBwoC,WAAYltB,OAAStb,OxH5BI,cwH6BzBqmC,SAAU,SAEZ,IAGM53B,EAAMC,cAAND,EAEFR,ECjEO,WAAM,MAGiB9G,mBAAS,CAC3CkB,WAAO9F,EACP+F,YAAQ/F,IALS,mBAGZinC,EAHY,KAGAC,EAHA,KA4BnB,OApBA3hC,qBAAU,WAER,SAAS4hC,IAEPD,EAAc,CACZphC,MAAOnN,OAAOiN,WACdG,OAAQpN,OAAOqN,cAWnB,OANArN,OAAOyN,iBAAiB,SAAU+gC,GAGlCA,IAGO,kBAAMxuC,OAAO0N,oBAAoB,SAAU8gC,MACjD,IAEIF,EDqCMG,GACP7C,EAAaz/B,iBAAO,MAEpBuiC,EAAqB,SAAAC,GACzB,OAAkB,MAAd/C,GAA4C,MAAtBA,EAAWt/B,QAEjCqiC,EAAMC,WAAW5uC,OAAO6uC,iBAAiBjD,EAAWt/B,SAASwD,UAI/D6+B,EACAC,WACE5uC,OAAO6uC,iBAAiB7C,SAAS8C,eAAe,mBAC7Ch/B,WAjC+C,EAsClB7D,mBAAS,CAC7C8iC,YAAa,EACbC,OAAQ,KAxC8C,mBAsCjDC,EAtCiD,KAsCpCC,EAtCoC,OA0C1BjjC,mBAAS68B,GA1CiB,mBA0CjD1f,EA1CiD,KA0CxCkT,EA1CwC,OA2CpBrwB,mBAAS,CAAEme,OAAQ,EAAGzH,MAAO,KA3CT,mBA2CjDhC,EA3CiD,KA2CrCkM,EA3CqC,OA4C1B5gB,oBAAS,GA5CiB,mBA4CjDkI,EA5CiD,KA4CxCioB,EA5CwC,OA8CpBnwB,oBAAS,GA9CW,mBA8CjDqqB,EA9CiD,KA8CrCiG,EA9CqC,OAgDlBtwB,oBAAS,GAhDS,mBAgDjDixB,EAhDiD,KAgDpCC,EAhDoC,KAqDlDC,EAAiBpmB,uBACrB,SAACjU,EAAK6H,GACJ0xB,EAAW,eACNlT,EADK,gBAEPrmB,EAAM6H,OAGX,CAACwe,IAGHxc,qBAAU,WACR,IAAIuiC,EAEFA,EADgB,MAAdvD,GAA4C,MAAtBA,EAAWt/B,QACnBs/B,EAAWt/B,QAAQ8iC,aAEnBpD,SAAS8C,eAAe,kBAAkBM,aAE5D,IAAMzsB,EAAQxM,KAAKk5B,OAChBF,EAAgBT,EA1ED,SA2EdA,EA1EW,OA4Ef7hB,EAAc,CAAEzC,OAAQ,EAAGzH,MAAOA,EAAQ,EAAIA,EAAQ,MACrD,IAkCH,IAAM2sB,EAAct4B,uBAAY,WAC9BolB,GAAW,GACXG,GAAc,GAEd30B,GACGojC,UAAU,CACTxjC,OAAO,8BAEAmZ,EAFD,CAGFyJ,QAASzJ,EAAWyJ,OAAS,GAAKzJ,EAAWgC,QAH3C,GAKDyG,EALC,CAMJkkB,WAAYltB,KACV8qB,GAAyB9hB,EAAQ+hB,SAAU/hB,EAAQkkB,aACnDxoC,OxH3ImB,kBwH8IxBwD,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KAER8pC,EAAe,CACbH,YAAa3pC,EAAKqd,MAClBusB,OAAQ5pC,EAAK2nB,eAGfmiB,EAAe,CAAEH,YAAa,EAAGC,OAAQ,KAE3C5S,GAAW,MAEZ/yB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd4lC,EAAe,CAAEH,YAAa,EAAGC,OAAQ,KACzC5S,GAAW,GACA,MAAP9yB,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,mBAGb,CAAC8D,EAASse,EAASzI,IAEtB/T,qBAAU,WACR0iC,MAGC,CAAChZ,EAAYvjB,EAAM4N,IAEtB,IAAM4c,EAAevmB,uBAAY,oBAAA/P,EAAAC,OAAA,kEAAAD,EAAA,MACzBq1B,GAAW,kBAAMwM,MADQ,yBAAA7hC,EAAA,MAEzBs1B,GAAc,kBAAM,MAFK,uCAG9B,CAACD,EAAYC,EAAeuM,IAEzB/a,EAAmB/W,uBACvB,SAAAgX,GACa,MAAPA,GAA8B,qBAAfA,EAAIC,QAIrBqhB,MAIJ,CAACA,IAGH1iC,qBAAU,WACe,MAAnB0f,EAAQ3pB,SACVorB,EAAiBzB,EAAQ3pB,WAE1B,CAAC2pB,EAAQ3pB,QAASorB,IAErB,IAAMoX,EAAkBvP,mBACtB,kBACE,CACErhB,MAAOhB,EAAE,oBACT3I,MAAO,KAHX,2BAKK1F,SALL,IAKKA,QALL,EAKKA,GAAsB4E,KAAI,SAAAC,GAAE,MAAK,CAClCwK,MAAOhB,EAAE,SAAD,OAAUxJ,IAClBa,MAAOb,UAGX,CAACwJ,IAGG6qB,EAA8BxI,mBAClC,kBACE,CACErhB,MAAOhB,EAAE,oBACT3I,MAAO,KAHX,oBAKKmqB,GAAsBjrB,KAAI,SAAAC,GAAE,sBAC1BA,EAD0B,CAE7BwK,MAAOhB,EAAE,SAAD,OAAUxJ,EAAGwK,iBAGzB,CAAChB,IAGG82B,EAA0BrzB,uBAC9B,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,OAAIyzB,EAAehrB,EAAMzI,EAAEwI,OAAOvH,UAC3C,CAACwyB,IAGGmS,EAAoBv4B,uBACxB,SAAA8X,GAAI,OACFwN,EAAW,eACNlT,EADK,GAEL0F,MAEP,CAAC1F,IAGGomB,EAAkBx4B,uBAAY,kBAAMslB,EAAWwM,KAAgB,CACnEA,IAGIxK,EAAgB1I,mBAAQ,WAC5B,IAAI+X,EAAa,OACjB,OAAQvkB,EAAQ+hB,UACd,IAAK,OACHwC,EAAa,OACb,MACF,IAAK,QACHA,EAAa,UACb,MACF,IAAK,MAGL,QACEA,EAAa,aAIjB,OACE,kBAAC,IAAMtsB,SAAP,CAAgBte,IAAI,kBAClB,kBAAC4Z,GAAD,CACE/R,MAAOwe,EAAQilB,qBACf38B,SAAU24B,EAAwB,wBAClC91B,MAAOhB,EAAE,yBACTQ,QAASqqB,EACTrvB,GAAG,kBALL,+CAOA,kBAAC4N,GAAD,CACE/R,MAAOwe,EAAQnJ,SACfvO,SAAU24B,EAAwB,YAClC91B,MAAOhB,EAAE,mBACTQ,QAASoxB,EACTp2B,GAAG,YALL,+CAOA,kBAAC,GAAD,CACE2B,KACEo4B,EAAcyE,YAAcnkB,EAAQmkB,WACpCzE,EAAcwE,aAAelkB,EAAQkkB,YACrCxE,EAAcqC,WAAa/hB,EAAQ+hB,SAC/B53B,EAAE6V,EAAQ+hB,UAHd,UAIO/qB,KAAOgJ,EAAQmkB,WAAWzoC,OAAO6oC,GAJxC,YAIuDp6B,EACjD,MALN,YAMS6M,KAAOgJ,EAAQkkB,YAAYxoC,OAAO6oC,IAG7C50B,SAEI+vB,EAAcyE,YAAcnkB,EAAQmkB,WACpCzE,EAAcwE,aAAelkB,EAAQkkB,YACrCxE,EAAcqC,WAAa/hB,EAAQ+hB,UAfzC,8CAoBE,kBAACsE,GAAD,CACE3gB,KAAM1F,EACN0S,gBAAiBA,GACjB4T,WAAYtS,EACZ8P,YAAaqC,EACbI,UAAWH,EACXI,YAAa9G,EANf,qDAWL,CACD1f,EACAihB,EACAlF,EACA/G,EACAmR,EACAC,EACApS,EACA0L,EACAv1B,IAGI+2B,EAActzB,uBAAY,WAC9BumB,IACAJ,GAAe,KACd,CAACI,IAEEgN,EAAcvzB,uBAAY,WAC9BulB,GAAc,GACdY,GAAe,KACd,IAEGsB,EAAiB7I,mBACrB,kBACE,kBAAC,IAAMvU,SAAP,CAAgBte,IAAI,mBAClB,kBAACyuB,GAAD,CAAcvY,QAASqxB,EAAvB,8CAAqC/2B,EAAE,gBACvC,kBAACie,GAAD,CAAclX,KAAK,UAAUrB,QAASsxB,EAAtC,8CACGh3B,EAAE,mBAIT,CAACA,EAAGg3B,EAAaD,IAGbtT,GAAuBpB,mBAC3B,kBACE,aAAIla,MAAM,IAAI5R,KAAI,SAACC,EAAIgO,GAAL,OAChB,kBAAC,GAAD,CACEhV,IAAG,4BAAuBgV,GAC1BjF,QAAQ,OACR3F,MAAM,OACNC,OAAO,SAJT,sDAOJ,IAEI2xB,GAAiB/nB,uBAAY,kBAAMmmB,GAAe,KAAQ,IAC1D6B,GAAgBhoB,uBAAY,kBAAMmmB,GAAe,KAAO,IACxDtG,GAAyB7f,uBAC7B,SAAC/C,EAAO2O,GAAR,OAAiBiK,EAAc,eAAKlM,EAAN,CAAkByJ,OAAQxH,OACxD,CAACjC,EAAYkM,IAGTkK,GAAkBnB,mBAAQ,WAC9B,OAAOpf,GAAQ1M,KAAI,SAAAC,GAAE,sBAAUA,EAAV,CAAcwK,MAAOhB,EAAExJ,EAAGwK,cAC9C,CAAChB,IAEEk3B,GAAkB7U,mBACtB,iBAAM,CACJ,CACExrB,KAAM,WACNmK,MAAO,sBAGX,IAGF,OACE,kBAAC,GAAD,CAASlD,IAAKu6B,EAAY78B,GAAG,iBAA7B,yCACE,kBAAC,GAAD,gDACE,kBAACmwB,GAAD,CAAkB/M,MAAOsY,GAAzB,oDACE98B,EAAmBT,WACnB,kBAAC,GAAD,gDACE,kBAACskB,GAAD,CACE7W,QAASpH,EAAE,WACX+G,KAAK,UACLrB,QAAS+lB,GAHX,8CAKE,kBAAC,KAAD,CACE/oB,MAAM,YACNnD,QAAQ,MACRusB,UACEh6B,KAAKC,UAAU8jB,KAAa/jB,KAAKC,UAAUwjC,GAJ/C,uCAOE,kBAACxJ,GAAD,CAAYlyB,OAAQ,GAAID,MAAO,GAAIc,KAAK,qBAAxC,iDAMTN,EAAmBT,WAClB,kBAAC,GAAD,iDACE,kBAAC,GAAD,6CAAa,CAACoxB,EAAeG,MAG/BtqB,GACA,oCACyB,MAAtB86B,EAAYD,QAAkBrhC,EAAmBT,WAChD,kBAAC,GAAD,CACEuJ,aAAa,OACbrR,KAAM6pC,EAAYD,OAClBx4B,QAASugB,GAHX,8CAMqB,MAAtBkY,EAAYD,SAAmBrhC,EAAmBT,WACjD,kBAAC,GAAD,CACE9H,KAAM6pC,EAAYD,OAClB1b,SAAUuc,GACV9c,YAAa,aAHf,oDAMqB,MAAtBkc,EAAYD,QACX,kBAACxsB,GAAD,CACEC,MAAOtM,KAAKuM,KAAKusB,EAAYF,YAAcpuB,EAAWgC,OACtDC,KAAMjC,EAAWyJ,OACjB1Y,SAAUmlB,GAHZ,oDAQL1iB,GAAW,oCAAG6iB,IACf,kBAAC,GAAD,CACElD,KAAMoJ,EACNjJ,QAAS8K,GACT9D,OAAQqD,EACRnD,QAASsD,EACT9lB,MAAOpF,EAAE,WALX,mDAWA5C,GAAUK,UAAOgM,IAAV,sEAAGhM,CAAH,yFAMT,qBAAGmd,MAAkBxsB,aAApB,SAKCs9B,GAAgBjuB,UAAOgM,IAAV,4EAAGhM,CAAH,2EAMf,qBAAGmd,MAAkBxsB,aAApB,SAQC49B,GAAiBvuB,UAAOgM,IAAV,6EAAGhM,CAAH,2BAYdugB,GAAgBvgB,UAAOgM,IAAV,4EAAGhM,CAAH,uFAKf,qBAAGmd,MAAkBxsB,aAApB,SAOC69B,GAAaxuB,UAAOgM,IAAV,yEAAGhM,CAAH,sBAEZ,qBAAGmd,MAAkBxsB,aAApB,SExdU6U,GA5CC,CACd,CACEzT,IAAK,MACLwR,MAAO,YACP6D,OAAQ,gBAAG03B,EAAH,EAAGA,gBAAuB53B,GAA1B,EAAoB3E,EAApB,+CACN,kBAAC,GAAD,CAAY0F,QAAS,kBAAM62B,EAAgB53B,IAA3C,6CACGA,EAAQ0H,OAIf,CACE7c,IAAK,WACLwR,MAAO,kBACP6D,OAAQ,gBAAG7E,EAAH,EAAGA,EAAM2E,EAAT,4BAAuB3E,EAAE,SAAD,OAAU2E,EAAQ+H,aAEpD,CACEld,IAAK,WACLwR,MAAO,eACP6D,OAAQ,gBAAG7E,EAAH,EAAGA,EAAM2E,EAAT,4BACc,MAApBA,EAAQ8G,SACN,kBAAC,GAAD,CACE/I,MACEiC,EAAQ8G,SAAW,qBAAuB,uBAF9C,kDAKGzL,EAAE2E,EAAQ8G,SAAW,iBAAmB,eAG3C,kBAAC,GAAD,CAAiB/I,MAAM,uBAAvB,kDACG1C,EAAE,oBAIX,CACExQ,IAAK,oBACLwR,MAAO,2BACP6D,OAAQ,SAAAF,GAAO,OACgB,MAA7BA,EAAQmI,kBACJD,KAAOlI,EAAQmI,mBAAmBvb,O1HZb,oB0HarB,OAOJw+B,GAAkBtyB,UAAO0Z,EAAV,+EAAG1Z,CAAH,0EAIV,qBAAGiF,OAAqB,wBAG7BwJ,GAAazO,UAAOsF,KAAV,0EAAGtF,CAAH,mFChDV++B,GAAYzrC,EAAe,UAC3BumB,GAAcvmB,EAAe,SAC7B0rC,GAAiB1rC,EAAe,iBAChC2rC,GAAmB3rC,EAAe,mBAClC4rC,GAAkB5rC,EAAe,iBACjC+2B,GAAU/2B,EAAe,cAoEhBsD,GAhED,CACZuoC,SAAU,SAAAp8B,GACR,OAAO9N,QAAQU,UAAU2B,MAAK,WAC5B,OAAO5C,IAAMuC,IAAI8nC,GAAWh8B,OAGhCunB,kBAAmB,SAAAvnB,GACjB,OAAO9N,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAI+nC,GAAgBj8B,OAEhEq8B,oBAAqB,SAAAr8B,GACnB,OAAO9N,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAIgoC,GAAkBl8B,OAElEs8B,gBAAiB,SAAAt8B,GACf,OAAO9N,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAIioC,GAAiBn8B,OAEjE9I,0BAfY,WAgBV,OAAO,IAAIhF,SAAQ,SAACU,EAAST,GAC3B,IAAMiF,EAAcnL,OAAOsG,aAAaC,QAAQ,gBAChD,GAAmB,MAAf4E,EAAqB,CACvB,IAAMC,EAAS,IAAIpL,OAAOqL,UAAX,UACV7G,GADU,kBACW2G,IAG1BC,EAAOE,OAAS,WACdF,EAAOG,KAAKlG,KAAKC,UAAU,CAAEkG,QAAS,OAAQC,M3Ha3B,sB2HZnBlC,QAAQmC,KAAR,4C3HYmB,oB2HVjB,eAEF/E,EAAQyE,IAGVA,EAAOO,QAAU,SAAUC,GACzB1F,EAAO,IAAIrD,MAAM+I,UAGnB1F,EAAO,IAAIrD,MAAM,YAIvB8wB,qBAAsB,SAAA5f,GAAO,OAC3B9N,QAAQU,UAAU2B,MAAK,kBACrB5C,IAAMuC,IA5CiB2rB,6CA4CvB,eACK7f,EADL,CAEEvM,OAAO,eACFuM,EAAQvM,OADP,GAED3C,WAIX02B,UAAW,SAAAxnB,GAAO,OAChB9N,QAAQU,UAAU2B,MAAK,kBACrB5C,IAAM+C,KAAK4yB,GAAStnB,EAAS,CAC3BhO,QAAS,CACP,eAAgB,6BAIxBuqC,eAAgB,SAAAvhC,GAAE,OAChB9I,QAAQU,UAAU2B,MAAK,WACrB,OAAO5C,IAAMuC,IAAN,UAAa4iB,GAAb,YAA4B9b,EAA5B,WCxEPwhC,GAAcjsC,EAAe,UAC7BksC,GAAuBlsC,EAAe,YAGtCirB,GAAc,CAClB3P,IAAK,CAAC6P,IACN7rB,OAAQ,GACRqc,SAAU,CAACwP,IACXjS,SAAU,CAACiS,KAmCE7nB,GAhCD,CACZ+nB,cAAe,CACb/P,IAAK,CAAEhV,MAAO,MACdhH,OAAQ,CAAEgH,MAAO,MACjBqV,SAAU,CAAErV,MAAO,MACnB4S,SAAU,CAAE5S,MAAO,OAErBs6B,cAAe,SAACpW,EAAMc,GAAP,OACb3pB,QAAQU,UAAU2B,MAAK,WACrB,IAAMunB,EAAaJ,GAAsBX,EAAMS,IAC/C,GAAIM,EAAWZ,QAEb,MADAW,EAAQ,eAAKC,EAAWf,OAClB,IAAIpsB,EAGZ,IAAM8E,EAASsoB,KAAUhB,GAAM,qBAAGlkB,SAClC,OAAOlF,IAAM+C,KAAK8nC,GAAX,eAA6B/oC,QAExCs9B,sBAAuB,kBACrB7+B,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAIuoC,QACzC7c,qBAAsB,SAAA5f,GAAO,OAC3B9N,QAAQU,UAAU2B,MAAK,kBACrB5C,IAAMuC,IA/BiB2rB,6CA+BvB,eACK7f,EADL,CAEEvM,OAAO,eACFuM,EAAQvM,OADP,GAED3C,YCrCE,eAA4B,EAAzB6F,SAA0B,IAAbxB,EAAY,4BACjCgP,EAAyBhP,EAAzBgP,QAAS6a,EAAgB7pB,EAAhB6pB,YACTxf,EAAMC,cAAND,EACR,OACE,kBAAC,GAAD,CAAS0F,QAAS,kBAAM8Z,EAAY7a,IAApC,oDACE,kBAAC,GAAD,kDAAO3E,EAAE,SAAD,OAAU2E,EAAQ+H,YAC1B,sEACA,kBAAC,GAAD,iDAAM/H,EAAQ0H,KACO,MAApB1H,EAAQ8G,SACP,kBAAC,GAAD,CACE/I,MACEiC,EAAQ8G,SAAW,qBAAuB,uBAF9C,4DAKGzL,EAAE2E,EAAQ8G,SAAW,iBAAmB,eAG3C,kBAAC,GAAD,CAAiB/I,MAAM,4BAAvB,4DACG1C,EAAE,kBAIP,kBAAC,GAAD,mDAAQA,EAAE,6BACV,kBAAC,GAAD,mDACgC,MAA7B2E,EAAQmI,kBACLD,KAAOlI,EAAQmI,mBAAmBvb,O7HDf,oB6HEnB,OAKN6L,GAAUK,UAAOgM,IAAV,yEAAGhM,CAAH,qSAiBPsyB,GAAkBtyB,UAAO0Z,EAAV,iFAAG1Z,CAAH,wHAKV,qBAAGiF,OAAqB,wBAM7Bkd,GAAMniB,UAAO0Z,EAAV,qEAAG1Z,CAAH,+IAWHgiB,GAAOhiB,UAAO2gB,GAAV,sEAAG3gB,CAAH,iFAOJ0d,GAAQ1d,UAAO0Z,EAAV,uEAAG1Z,CAAH,yCAKLoiB,GAAQpiB,UAAO0Z,EAAV,uEAAG1Z,CAAH,4ECkHIuF,kBAAK3I,IAjLF,SAAC,GAA2B,EAAzBlD,SAA0B,IAAbxB,EAAY,4BACpC4B,EAAYiB,qBAAWC,IAAvBlB,QAGNqJ,EAaEjL,EAbFiL,QACAuR,EAYExc,EAZFwc,MACA+qB,EAWEvnC,EAXFunC,WACAj6B,EAUEtN,EAVFsN,QACAs5B,EASE5mC,EATF4mC,gBACAhc,EAQE5qB,EARF4qB,KACAsC,EAOEltB,EAPFktB,QACA+O,EAMEj8B,EANFi8B,gBACA9O,EAKEntB,EALFmtB,SACA1V,EAIEzX,EAJFyX,WACAkM,EAGE3jB,EAHF2jB,cACAyJ,EAEEptB,EAFFotB,WACA3oB,EACEzE,EADFyE,mBAEM4F,EAAMC,cAAND,EAlBoC,EAoBpBtH,mBAASrE,GAAM+nB,eApBK,mBAoBrCb,EApBqC,KAoB/Bc,EApB+B,OAsBJ3jB,oBAAS,GAtBL,mBAsBrC+jB,EAtBqC,KAsBvB0gB,EAtBuB,OAuBRzkC,oBAAS,GAvBD,mBAuBrCgkB,EAvBqC,KAuBzB0gB,EAvByB,OAwBN1kC,mBAAS,MAxBH,mBAwBrCsqB,EAxBqC,KAwBxBqa,EAxBwB,OAyBA3kC,mBAAS,IAzBT,mBAyBrCm5B,EAzBqC,KAyBrByL,EAzBqB,KA2BtCja,EAAQ5f,uBAAY,WACxB4Y,EAAQhoB,GAAM+nB,eACd+gB,GAAgB,GAChBC,GAAc,GACdC,EAAe,QACd,IAEG/b,EAAc7d,uBAAY,WAC9Bof,GAAQ,GACRQ,MACC,CAACA,EAAOR,IAEL9F,EAAetZ,uBACnB,SAACjU,EAAK6H,GACJglB,EAAQ,eACHd,EADE,gBAEJ/rB,EAAM,CACL6H,MAAOA,QAIb,CAACkkB,IAGHliB,qBAAU,WACRkjC,EAAgB,MAChBlZ,IACAP,EAAS,sBACTzuB,GACGk9B,wBACAx8B,MAAK,SAAA1F,GACiB,MAAjBA,EAASwC,MAAyC,MAAzBxC,EAASwC,KAAK2nB,SACzC8jB,EAAkBjuC,EAASwC,KAAK2nB,YAGnC1jB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdunC,EAAkB,SAIrB,IAEH,IAAMxgB,EAAerZ,uBACnB,SAAA/C,GACEA,EAAMoI,iBACNq0B,GAAgB,GAChBC,GAAc,GACd/oC,GACGs9B,cAAcpW,GAAM,SAAAA,GAAI,OAAIc,EAAQ,eAAKd,OACzCxmB,MAAK,SAAA1F,GACAA,EAASwC,OACXyvB,IACAyB,IACAjE,GAAc9e,EAAE,6BAGnBlK,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QAEd+oB,GAAY9e,EAAE,uBAEH,MAAPjK,GAA+B,MAAhBA,EAAI1G,SACrBkI,EAAQ9D,cAEiB,MAArBsC,EAAI1G,SAASwC,MACfwrC,EAAetnC,EAAI1G,SAASwC,SAIjCk1B,SAAQ,kBAAMqW,GAAc,QAEjC,CAAC7lC,EAASgkB,EAAM+F,EAAathB,EAAG+iB,IAG5BQ,EAAgBlB,mBACpB,kBACElQ,EACGxP,OACEyK,EAAWyJ,OAAS,GAAKzJ,EAAWgC,OACpChC,EAAWyJ,OAAS,GAAKzJ,EAAWgC,MAAQhC,EAAWgC,OAEzD7Y,KAAI,SAAAC,GAAE,sBAAUA,EAAV,CAAcwJ,IAAGu8B,yBAC5B,CAACpqB,EAAO/E,EAAWgC,MAAOhC,EAAWyJ,OAAQ0lB,EAAiBv8B,IAG1DwjB,EAAkBnB,mBAAQ,WAC9B,OAAOpf,EAAQ1M,KAAI,SAAAC,GAAE,sBAAUA,EAAV,CAAcwK,MAAOhB,EAAExJ,EAAGwK,cAC9C,CAACiC,EAASjD,IAEPyjB,EAAuBpB,mBAC3B,kBACE,aAAIla,MAAM,IAAI5R,KAAI,SAACC,EAAIgO,GAAL,OAChB,kBAAC,GAAD,CACEhV,IAAG,4BAAuBgV,GAC1BjF,QAAQ,OACR3F,MAAM,OACNC,OAAO,SAJT,6DAOJ,IAGIypB,EAAyB7f,uBAC7B,SAAC/C,EAAO2O,GAAR,OAAiBiK,EAAc,eAAKlM,EAAN,CAAkByJ,OAAQxH,OACxD,CAACjC,EAAYkM,IAGf,OACE,oCACI1Y,EAmBA,oCAAG6iB,GAlBH,oCACY,MAATtR,GAAiB/X,EAAmBT,WACnC,kBAAC,GAAD,CAAa9H,KAAM0xB,EAAetgB,QAASugB,EAA3C,qDAEQ,MAATrR,IAAkB/X,EAAmBT,WACpC,kBAAC,GAAD,CACE9H,KAAM0xB,EACNxD,SAAUwd,GACV/d,YAAa+c,EAHf,2DAMF,kBAACttB,GAAD,CACEC,MAAOtM,KAAKuM,KAAK+tB,EAAa9vB,EAAWgC,OACzCC,KAAMjC,EAAWyJ,OACjB1Y,SAAUmlB,EAHZ,2DASH/C,GACC,kBAAC,GAAD,CACEhF,KAAMA,EACNgF,KAAMA,EACNG,QAASY,EACTvE,aAAcA,EACdiG,YAAaA,EACbvG,aAAcA,EACdmV,gBAAiBA,EACjBC,eAAgBA,EAChB/U,aAAcA,EACdJ,WAAYA,EACZ0D,qBAAsB/rB,GAAM+rB,qBAX9B,gEAkBuCta,MCpMzCwR,GAAcvmB,EAAe,SAC7BksC,GAAuBlsC,EAAe,YAEtCirB,GAAc,CAClB3P,IAAK,CAAC6P,IACN7rB,OAAQ,CAAC6rB,IACTxP,SAAU,CAACwP,IACXjS,SAAU,CAACiS,KA8BE7nB,GA3BD,CACZ+nB,cAAe,CACb/P,IAAK,CAAEhV,MAAO,MACdhH,OAAQ,CAAEgH,MAAO,MACjBqV,SAAU,CAAErV,MAAO,MACnB4S,SAAU,CAAE5S,MAAO,OAErB0lC,eAAgB,SAAAvhC,GAAE,OAChB9I,QAAQU,UAAU2B,MAAK,WACrB,OAAO5C,IAAMuC,IAAN,UAAa4iB,GAAb,YAA4B9b,EAA5B,UAEXgiC,kBAAmB,SAAChiC,EAAI+f,EAAMc,GAAX,OACjB3pB,QAAQU,UAAU2B,MAAK,WACrB,IAAMunB,EAAaJ,GAAsBX,EAAMS,IAC/C,GAAIM,EAAWZ,QAEb,MADAW,EAAQ,eAAKC,EAAWf,OAClB,IAAIpsB,EAGZ,IAAM8E,EAASsoB,KAAUhB,GAAM,qBAAGlkB,SAClC,OAAOlF,IAAMwyB,IAAN,UAAarN,GAAb,YAA4B9b,EAA5B,oBAAwCvH,QAEnDwpC,WAAY,SAAAjiC,GAAE,OACZ9I,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMsiB,OAAN,UAAgB6C,GAAhB,YAA+B9b,EAA/B,UAC/B+1B,sBAAuB,kBACrB7+B,QAAQU,UAAU2B,MAAK,kBAAM5C,IAAMuC,IAAIuoC,S,yVCZ3C,IAAMpY,GAAkB,CAAC,UAifV7hB,kBAAK3I,IA/eC,SAAC,GAA2B,EAAzBlD,SAA0B,IAAD,kBAAZxB,EAAY,4BACvC4B,EAAYiB,qBAAWC,IAAvBlB,QAEAyI,EAAMC,cAAND,EACAxE,EAAOspB,cAAPtpB,GAEN+gC,EAgBE5mC,EAhBF4mC,gBACAmB,EAeE/nC,EAfF+nC,aACAr/B,EAcE1I,EAdF0I,UACA2mB,EAaErvB,EAbFqvB,aACA3Q,EAYE1e,EAZF0e,YACApK,EAWEtU,EAXFsU,SACA2nB,EAUEj8B,EAVFi8B,gBACA9O,EASEntB,EATFmtB,SACAmC,EAQEtvB,EARFsvB,iBACAC,EAOEvvB,EAPFuvB,QACAG,EAME1vB,EANF0vB,YACAC,EAKE3vB,EALF2vB,kBACAC,EAIE5vB,EAJF4vB,OACAoY,EAGEhoC,EAHFgoC,YACAC,EAEEjoC,EAFFioC,eACAxjC,EACEzE,EADFyE,mBArB6C,EAwBvB1B,mBAASrE,GAAM+nB,eAxBQ,mBAwBxCb,EAxBwC,KAwBlCc,EAxBkC,OA0BT3jB,mBAAS,CAC7C+jB,cAAc,EACdC,YAAY,EACZsG,YAAa,OA7BgC,mBA0BxCrG,EA1BwC,KA0B3BC,EA1B2B,OAgCHlkB,mBAAS,MAhCN,mBAgCxCm5B,EAhCwC,KAgCxByL,EAhCwB,OAiCb5kC,oBAAS,GAjCI,mBAiCxCgtB,EAjCwC,KAiC7BC,EAjC6B,OAmCGjtB,oBAAS,GAnCZ,oBAmCxCotB,GAnCwC,MAmCrBC,GAnCqB,MAqCzCC,GAAkBviB,uBAAY,WAClCsiB,IAAqB,KACpB,IAEGzE,GAAc7d,uBAAY,WAC9BsiB,IAAqB,KACpB,IACG1C,GAAQ5f,uBAAY,WACxB4Y,EAAQhoB,GAAM+nB,eACdQ,EAAe,CACbH,cAAc,EACdC,YAAY,EACZsG,YAAa,OAEfqC,MACC,CAACA,IAEJhsB,qBAAU,WACHgF,GAA4B,MAAfs/B,GAChBtpB,EAAYspB,EAAY1zB,YAGzB,CAAC0zB,IAEJtkC,qBAAU,WACRgqB,KACAhvB,GACGk9B,wBACAx8B,MAAK,SAAA1F,GACiB,MAAjBA,EAASwC,MAAyC,MAAzBxC,EAASwC,KAAK2nB,SACzC8jB,EAAkBjuC,EAASwC,KAAK2nB,YAGnC1jB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdunC,EAAkB,SAIrB,IAEHjkC,qBAAU,WACE,MAANmC,GAAeiV,MAAMwV,OAAOzqB,KAsD9B6nB,KACAkZ,EAAgB,MAChBqB,EAAe,OAvDVv/B,IACHue,EAAe,CACbH,cAAc,EACdC,YAAY,EACZsG,YAAa,OAEf3uB,GACG0oC,eAAevhC,GACfzG,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACR+rC,EAAe/rC,GAEG,cAAdA,EAAKq0B,MACPP,GAAa,GAGf,IAAMQ,EAAcz2B,OAAOsK,KAAK3F,GAAM+nB,eAChC1O,EAAUhe,OAAOsK,KAAKnI,GAAMkZ,QAChC,SAACC,EAAMxb,GAQL,OAPI22B,EAAY9d,SAAS7Y,KACnBq1B,GAAgBxc,SAAS7Y,GAC3Bwb,EAAKxb,GAAO,CAAE6H,MAAOxF,EAAKrC,GAAK+G,KAAI,SAAAC,GAAE,OAAIA,EAAGgF,OAE5CwP,EAAKxb,GAAO,CAAE6H,MAAOxF,EAAKrC,KAGvBwb,IATKtb,OAAA,IAAAA,CAAA,GAWT2E,GAAM+nB,gBAEbC,EAAQ3O,GAEY,MAAhBgwB,GACFnB,EAAgB1qC,QAGlBwxB,KACAkZ,EAAgB,MAChBqB,EAAe,SAGlB9nC,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdwmC,EAAgB,MAChBqB,EAAe,MAEJ,MAAP7nC,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,oBAUjB,CAAC+H,EAAI6C,EAAWknB,IAEnB,IAAMhE,GAAe9d,uBACnB,SAAAU,GACE,IAAM1R,EAAQiC,KAAIioB,EAAYqG,YAAa7e,EAAU,MACrD,OAC6B,MAA3BwY,EAAYqG,aACH,MAATvwB,GACY,MAAZA,EAAM,GAECA,EAAM,GAER,OAET,CAACkqB,EAAYqG,cAGTlB,GAAsBre,uBAC1B,SAAAU,GACE,GAAIwY,EAAYF,cAAkC,MAAlBlB,EAAKpX,GAAmB,CACtD,IAAM4d,EAAWR,GAAapd,GAC9B,GAAgB,MAAZ4d,EACF,OAAOA,EACF,GAAIxG,EAAKpX,GAAU/U,QACxB,OAAO4Q,EAAE,UAAD,OAAWub,EAAKpX,GAAU/U,UAGtC,OAAO,OAET,CAACmsB,EAAMvb,EAAGuhB,GAAc5E,EAAYF,eAGhCM,GAAetZ,uBACnB,SAACjU,EAAK6H,GACJglB,EAAQ,eACHd,EADE,gBAEJ/rB,EAAM,CACL6H,MAAOA,QAIb,CAACkkB,IAGHliB,qBAAU,WACJgF,GACF0e,GAAa,WAAY9S,KAG1B,CAACA,IAEJ5Q,qBAAU,WACJgF,GACF4mB,EACE,kBAAC,GAAD,CACExyB,MACEkqB,EAAYF,cACK,MAAjBlB,EAAKtR,WACqB,MAAzBsR,EAAKtR,SAAS7a,WAAqBmyB,GAAa,aAJrD,yDAOGA,GAAa,aAAevhB,EAAE,0BAKpC,CAACub,EAAMld,IAEV,IAAMye,GAAerZ,uBACnB,SAAA/C,GACEA,EAAMoI,iBACN8T,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBF,cAAc,EACdC,YAAY,OAEdroB,GACGmpC,kBAAkBhiC,EAAI+f,GAAM,SAAAA,GAAI,OAAIc,EAAQ,eAAKd,OACjDxmB,MAAK,SAAA1F,GACJ21B,GAAa,GACT31B,EAASwC,OACX0qC,EAAgBltC,EAASwC,MACzBitB,GAAc9e,EAAE,uBAChB4c,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,WAIjB5mB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd+oB,GAAY9e,EAAE,qBAEH,MAAPjK,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,cACRmpB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,QAGW,MAArB3mB,EAAI1G,SAASwC,KACf+qB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,EACZsG,YAAajtB,EAAI1G,SAASwC,UAG5B+qB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,YAMxB,CAACnlB,EAASgkB,EAAM/f,EAAIwpB,EAAcuX,EAAiBv8B,IAG/C2U,GAAelR,uBAAY,WAC/BmZ,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,OAEdroB,GACGopC,WAAWjiC,GACXzG,MAAK,SAAA1F,GACJktC,EAAgB,MAChBzd,GAAc9e,EAAE,yBAChB4c,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,UAGf5mB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd+oB,GAAY9e,EAAE,uBACH,MAAPjK,GAA+B,MAAhBA,EAAI1G,WACrBkI,EAAQ9D,cACRmpB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,QAII,MAAhB3mB,EAAI1G,UAAyC,MAArB0G,EAAI1G,SAASwC,KACvC+qB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,EACZsG,YAAajtB,EAAI1G,SAASwC,UAG5B+qB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,UAIjBqK,SAAQ,kBAAMzF,UAChB,CAAC/pB,EAAS+pB,GAAa9lB,EAAI+gC,EAAiBv8B,IAE/C3G,qBAAU,WACW,MAAfskC,GAA0C,MAAnBA,EAAYtxB,KAEZ,MAAhBqxB,GAAwBA,EAAarxB,IAD9CyW,EAASzkB,EAAY,aAAe,mBAMrC,CAACs/B,EAAaD,EAAcr/B,EAAWykB,EAAU9iB,IAEpD,IAAMyjB,GAAuBpB,mBAC3B,kBACE,aAAIla,MAAM,IAAI5R,KAAI,SAACC,EAAIgO,GAAL,OAChB,kBAAC,GAAD,CACEhV,IAAG,4BAAuBgV,GAC1BjF,QAAQ,OACR3F,MAAM,OACNC,OAAO,UACPghB,OAAO,aACP0E,UAAU,IANZ,gEASJ,IAGIwS,GAAsB1P,mBAC1B,kBACqB,MAAnBuP,EACIA,EAAgBr7B,KAAI,SAAAC,GAAE,sBACnBA,EADmB,CAEtBwK,MAAOhB,EAAE,SAAD,OAAUxJ,EAAGwK,aAErB,KACN,CAAC4wB,EAAiB5xB,IAGd69B,GAAqBxb,mBACzB,kBACoB,MAAlBwP,EACIA,EAAet7B,KAAI,SAAAC,GAAE,YAAK,CAC1Ba,MAAOb,EAAGgF,GACVwF,MAAK,UAAExK,EAAG6V,WAAL,QAAY7V,EAAGgF,OAEpB,KACN,CAACq2B,IAGG7U,GAAwBvZ,uBAC5B,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,aAAI2mB,GAAale,EAAD,OAAOzI,QAAP,IAAOA,GAAP,UAAOA,EAAGwI,cAAV,aAAO,EAAWvH,UAC3C,CAAC0lB,KAGGiF,GAAmBve,uBAAY,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,OAAI2mB,GAAale,EAAMzI,MAAI,CACvE2mB,KAGI0W,GAAwBhwB,uBAC5B,SAAA5E,GAAI,OAAI,SAAA6B,GAAK,iBACXqc,GACEle,EACiC,KAA5B,OAAL6B,QAAK,IAALA,GAAA,UAAAA,EAAO9B,cAAP,mBAAevH,aAAf,eAAsB4C,QAAtB,OAAqCyG,QAArC,IAAqCA,GAArC,UAAqCA,EAAO9B,cAA5C,aAAqC,EAAevH,MAAQ,SAEhE,CAAC0lB,KAGGmX,GAAezwB,uBAAY,kBAAMuhB,GAAa,KAAO,CAACA,IAEtDmP,GAAgB1wB,uBAAY,kBAAMuhB,GAAa,KAAQ,CAACA,IAExDoP,GAAS3wB,uBAAY,WACzB4f,KACAkZ,EAAgB,QACf,CAAClZ,GAAOkZ,IAEX,OACE,oCACE,kBAAC,GAAD,2DACkB,MAAfoB,GAAuB,oCAAGla,IACX,MAAfka,GACC,oCACE,kBAAC,GAAD,CACE52B,KAAK,OACLlI,KAAK,MACLxH,MAAK,iBAAEkkB,QAAF,IAAEA,GAAF,UAAEA,EAAMlP,WAAR,aAAE,EAAWhV,aAAb,QAAsB,GAC3B8G,SAAU6jB,GAAiB,OAC3BhhB,MAAOhB,EAAE,aACTvN,MACEkqB,EAAYF,eACW,OAAlB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMlP,WAAN,eAAWjd,YAAqBmyB,GAAa,QAEhDpiB,WAAY2iB,GAAoB,OAChC5Z,WAAY7J,GAAa6mB,EAAQ,QACjC7mB,YAAaA,EACbmkB,UAAW,IACXC,UAAW,EACX1jB,QAAM,EACN2jB,KAAM,QAhBR,0DAkBA,kBAAC,GAAD,CACErrB,MAAK,iBAAEkkB,QAAF,IAAEA,GAAF,UAAEA,EAAM7O,gBAAR,aAAE,EAAgBrV,aAAlB,QAA2B,GAChC8G,SAAU6e,GAAsB,YAChChc,MAAOhB,EAAE,mBACTQ,QAASuxB,GACTv2B,GAAG,WACH/I,MACEkqB,EAAYF,eACgB,OAAvB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAM7O,gBAAN,eAAgBtd,YAAqBmyB,GAAa,aAErDpiB,WAAY2iB,GAAoB,YAChC5Z,WAAY7J,GAAa6mB,EAAQ,aACjC7mB,YAAaA,EAZf,2DAcA,kBAAC,GAAD,CACEwJ,UAAQ,EACRxQ,MAAK,iBAAEkkB,QAAF,IAAEA,GAAF,UAAEA,EAAMlrB,cAAR,aAAE,EAAcgH,aAAhB,QAAyB,GAC9B8G,SAAUs1B,GAAsB,UAChCzyB,MAAOhB,EAAE,iBACTQ,QAASq9B,GACTriC,GAAG,SACH/I,MACEkqB,EAAYF,eACc,OAArB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMlrB,cAAN,eAAcjB,YAAqBmyB,GAAa,WAEnDpiB,WAAY2iB,GAAoB,UAChC5Z,WAAY7J,GAAa6mB,EAAQ,WACjC7mB,YAAaA,EAbf,6DAkBN,kBAAC,GAAD,CAAgBA,UAAWA,EAAY,EAAI,EAA3C,0DACGA,EACC,oCACE,kBAAC4f,GAAD,CACElX,KAAK,WACLrB,QAASyuB,GACTjsB,SAAUyU,EAAYD,WAHxB,wDAKG1c,EAAE,WAEJ5F,EAAmBT,WAClB,oCACE,kBAAC,GAAD,wDACA,kBAAC,GAAD,wDACA,kBAAC,GAAD,yDAGJ,kBAACskB,GAAD,CACElX,KAAK,UACLrB,QAASoX,GACT5U,SAAUyU,EAAYD,WAHxB,wDAKG1c,EAAE,YAIP,oCACE,kBAACie,GAAD,CACElX,KAAK,WACLrB,QAAS0uB,GAFX,wDAIGp0B,EAAE,eAEJ5F,EAAmBT,WAClB,oCACE,kBAAC,GAAD,wDACA,kBAAC,GAAD,yDAGH2rB,GAAqBI,EACpB,kBAACzH,GAAD,CAAclX,KAAK,QAAQrB,QAASsgB,GAApC,wDACGhmB,EAAE,iBAGL5F,EAAmBT,WAAa,kBAAC,GAAD,wDAEjC2rB,GACC,kBAACrH,GAAD,CAAclX,KAAK,UAAUrB,QAASwuB,GAAtC,wDACGl0B,EAAE,iBAMb,kBAACwnB,GAAD,CACEjH,KAAMuF,GACNxE,YAAaA,GACblc,MAAOpF,EAAE,sBACTgY,YAAahY,EAAE,4BACf8c,aAAcnI,GACd0P,WAAYrkB,EAAE,gBACdokB,WAAW,SAPb,6DAa4Cte,MAE5CwhB,GAAiB7pB,UAAOgM,IAAV,kFAAGhM,CAAH,6FAOhB,qBAAGmd,MAAkBxsB,aAApB,MAMD,SAAAuH,GAAK,OACLA,EAAM0I,WACNrQ,cADA,kEAOEu5B,GAAa9pB,UAAOgM,IAAV,8EAAGhM,CAAH,yBAIV4pB,GAAiB5pB,UAAOgM,IAAV,kFAAGhM,CAAH,0DAIhB,qBAAGmd,MAAkBxsB,aAApB,SAQC04B,GAAgBrpB,UAAO0Z,EAAV,iFAAG1Z,CAAH,4HASf,SAAA9H,GAAK,OACLA,EAAMlD,OACNzE,cADA,kC,2oBCjhBWqM,WAAe,YAA4B,EAAzBlD,SAA0B,IAAbxB,EAAY,8BAC7B6C,qBAAWC,IAA9BlB,EADgD,EAChDA,QAASD,EADuC,EACvCA,MACFyhB,EAAYvgB,qBAAWwgB,IAA9B1hB,MAEA8C,EAAuBzE,EAAvByE,mBAEA4F,EAAMC,cAAND,EACAnJ,EAAS8xB,cAAT9xB,KACFtD,EAAUq1B,cARwC,EAUpBlwB,mBAAS,CAC3CwkC,WAAY,EACZ/qB,MAAO,KAZ+C,mBAUjD2rB,EAViD,KAUrCC,EAVqC,OAe1BrlC,oBAAS,GAfiB,mBAejDkI,EAfiD,KAexCioB,EAfwC,OAgBtBnwB,oBAAS,GAhBa,mBAgBjD2F,EAhBiD,KAgBtC2mB,EAhBsC,OAiBhCtsB,oBAAS,GAjBuB,mBAiBjD6nB,EAjBiD,KAiB3CsC,EAjB2C,OAkBxBnqB,mBAAS,MAlBe,mBAkBjDuR,EAlBiD,KAkBvCoK,EAlBuC,KAoBlDkhB,EAAgBlT,mBACpB,iBAAO,CACL5xB,KAAM,GACNJ,OAAQ,GACRqc,SAAU,GACVjB,SAAU,GACVY,IAAK,MAEP,IA5BsD,EA8B1B3T,mBAAS68B,GA9BiB,mBA8BjD1f,EA9BiD,KA8BxCkT,EA9BwC,OA+BpBrwB,mBAAS,CAAEme,OAAQ,EAAGzH,MAAO,KA/BT,mBA+BjDhC,EA/BiD,KA+BrCkM,EA/BqC,OAgCpB5gB,oBAAS,GAhCW,mBAgCjDqqB,EAhCiD,KAgCrCiG,EAhCqC,KAkClD+M,EAA0Bn9B,iBAAO,MACjColC,EAA4BplC,iBAAO,MACnCi9B,GAAyBj9B,iBAAO,MApCkB,GAsCtBF,mBAAS,CACzCjI,KAAM,GACNJ,OAAQ,GACRgc,IAAK,KAzCiD,qBAsCjDoV,GAtCiD,MAsCtCC,GAtCsC,SA2CfhpB,mBAAS,CAChDrI,OAAQ,GACRI,KAAM,GACN4b,IAAK,KA9CiD,qBA2CjDsV,GA3CiD,MA2ClCsB,GA3CkC,SAiDdvqB,mBAAS,MAjDK,qBAiDjD0wB,GAjDiD,MAiDlCnE,GAjDkC,SAkDlBvsB,mBAAS,MAlDS,qBAkDjDilC,GAlDiD,MAkDpCC,GAlDoC,SAoD9BllC,mBAAS,IApDqB,qBAoDjD0M,GApDiD,MAoD1C0d,GApD0C,SAsDhBpqB,mBAAS,MAtDO,qBAsDjDglC,GAtDiD,MAsDnCnB,GAtDmC,SAuD5B7jC,oBAAS,GAvDmB,qBAuDjD6sB,GAvDiD,MAuDzC4D,GAvDyC,MAyDlDE,GAA0BzwB,iBAAO,MAzDiB,GA0DVF,mBAAS,IA1DC,qBA0DjD4wB,GA1DiD,MA0DhCC,GA1DgC,SA2DN7wB,mBAAS,IA3DH,qBA2DjD8wB,GA3DiD,MA2D9BC,GA3D8B,SA4DR/wB,mBAAS,MA5DD,qBA4DjDkpB,GA5DiD,MA4D/BC,GA5D+B,MA8DlD6H,GAAkB9wB,iBAAO,MA9DyB,GA+DlBF,oBAAS,GA/DS,qBA+DjDixB,GA/DiD,MA+DpCC,GA/DoC,SAiElBlxB,mBAAS,CAC7CgkB,YAAY,EACZD,cAAc,IAnEwC,qBAiEjDE,GAjEiD,MAiEpCC,GAjEoC,MAsElDgV,GAAkBvP,mBACtB,sCAAU1wB,SAAV,IAAUA,QAAV,EAAUA,GAAsB4E,KAAI,SAAAC,GAAE,MAAK,CAAEwK,MAAOxK,EAAIa,MAAOb,SAC/D,IAGIynC,GAAwBx6B,uBAC5B,SAAAnT,GACc,MAARA,GAA2B,MAAXA,EAAKkL,IACvB+gC,GAAgBjsC,GAChBiD,EAAQqC,KAAR,UAAgBiB,GAAhB,OAAuBvG,EAAKkL,GAA5B,QAEA+gC,GAAgB,MAChBqB,GAAe,MACf5Y,GAAa,GACbgE,GAAc,GACdz1B,EAAQqC,KAAR,UAAgBiB,OAGpB,CAACtD,EAASsD,IAGNwuB,GAAc5hB,uBAAY,WAC9BgmB,GAAqB,IACrB5H,GAAoB,MACpB0H,GAAmB,MAClB,IAEGM,GAAiBpmB,uBACrB,SAACjU,EAAK6H,GACJ0xB,EAAW,eACNlT,EADK,gBAEPrmB,EAAM6H,OAGX,CAACwe,IAGGiU,GAA2BrmB,uBAC/B,SAACU,EAAU9M,GACTqqB,GAAa,eACRD,GADO,gBAETtd,EAAW9M,KAEdwyB,GAAe1lB,EAAU9M,KAE3B,CAACoqB,GAAWoI,KAGR3E,GAAUzhB,uBACd,SAAAU,GACE,OAAoB,MAAhBu5B,IAA8C,cAAtBA,GAAaxX,MAChCl2B,EAA2BM,KAAK+X,SAASlE,KAIpD,CAACu5B,KAGGQ,GAAqBz6B,uBACzB,SAAAjI,GACEnH,GAAM0oC,eAAevhC,GAAIzG,MAAK,SAAA1F,GAC5B,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACFssC,EAAYrsC,KAAKsH,MAAMtH,KAAKC,UAAU+rC,EAAW3rB,QACjDrK,EAAQq2B,EAAU9jB,WAAU,SAAA7jB,GAAE,OAAIA,EAAGgF,KAAOA,KAC9CsM,GAAS,IACXq2B,EAAUr2B,GAASjW,EACnBksC,EAAc,eACTD,EADQ,CAEX3rB,MAAOgsB,YAMjB,CAACL,IAGGM,GAAa36B,uBAAY,WAC7BolB,GAAW,GACXG,GAAc,GAEd30B,GACGuoC,SAAS,CACR3oC,OAAO,eACF,CACDmb,MAAO,OAFL,GAIDyG,KAGN9gB,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRksC,EAAc,CACZb,WAAYrrC,EAAKqd,MACjBiD,MAAOtgB,EAAK2nB,eAGdukB,EAAc,CAAEb,WAAY,EAAG/qB,MAAO,KAExC0W,GAAW,MAEZ/yB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdgoC,EAAc,CAAEb,WAAY,EAAG/qB,MAAO,KACtC0W,GAAW,GACA,MAAP9yB,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,mBAGb,CAAC8D,EAASse,IAEP2E,GAAmB/W,uBACvB,SAAAgX,GAIK,IAAD,EAHF,GACS,MAAPA,IACgB,cAAfA,EAAIC,QAAyC,SAAfD,EAAIC,QAEnC,GAAIgjB,KAAmB,OAAHjjB,QAAG,IAAHA,GAAA,UAAAA,EAAKE,eAAL,eAAcnf,MAAOkiC,GAAaliC,GACnC,WAAbif,EAAI1T,KACNoiB,IAAW5D,IACW,WAAb9K,EAAI1T,MAAoC,MAAf0T,EAAIE,SACtC4hB,GAAgB,WAEb,GAAoB,MAAhBmB,GAAsB,CAAC,IAAD,EACd,QAAbjjB,EAAI1T,MAA+B,WAAb0T,EAAI1T,KAC5Bq3B,KACsB,WAAb3jB,EAAI1T,OAAJ,OAAyB0T,QAAzB,IAAyBA,GAAzB,UAAyBA,EAAKE,eAA9B,aAAyB,EAAcnf,IAChD0iC,GAAmBzjB,EAAIE,QAAQnf,IAE/B4iC,QAKR,CAACA,GAAYF,GAAoBR,GAAcnY,KAG3CyE,GAAevmB,uBAAY,WAC/BslB,EAAWwM,GACX7T,GAAa,CACXjxB,KAAM,GACNJ,OAAQ,GACRgc,IAAK,KAEP2c,GAAc,KACb,CAACuM,IAEEtL,GAAcxmB,uBAAY,SAAA/C,GACP,MAAnBgpB,IAAsD,MAA3BA,GAAgB3wB,SAC7C2wB,GAAgB3wB,QAAQmxB,UAEzB,IAEGnN,GAAetZ,uBACnB,SAAM/C,GAAN,iBAAAhN,EAAAC,OAAA,kEAAAD,EAAA,MAC6BgN,EAAM9B,OAAOurB,MAAM,IADhD,UAGsB,OAFdC,EADR,gCAIIxN,GAAe,CACbF,YAAY,EACZD,cAAc,IAEhBoM,GAAW,IAELwB,EAAW,IAAIC,UAEZC,OAAO,OAAQH,GAZ5B,YAAA12B,EAAA,MAaUW,GACH2zB,UAAUqC,GACVt1B,MAAK,SAAA1F,GACJutB,GAAe,eACVD,GADS,CAEZD,YAAY,KAEU,MAApBrtB,EAASuE,QACXkrB,GAAc9e,EAAE,4BAGnBlK,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd6mB,GAAe,eACVD,GADS,CAEZD,YAAY,KAGdoC,GAAY9e,EAAE,uBACH,MAAPjK,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,iBAGXszB,SAAQ,kBAAMiC,GAAc,OApCnC,wCAyCA,CAACzxB,EAASolB,GAAa3c,IAGzB3G,qBAAU,WACY,MAAhBqkC,KACFU,KACA9kB,EAAc,CAAEzC,OAAQ,EAAGzH,MAAO,QAGnC,CAAC2T,EAAY2a,KAEhBrkC,qBAAU,WACgC,OAApCgwB,GAAwBtwB,SAC1BoqB,aAAakG,GAAwBtwB,SAEvCswB,GAAwBtwB,QAAU1F,YAAW,WAC3Cg2B,GAAwBtwB,QAAU,KAC9B1E,GAAM+rB,sBACR/rB,GACG+rB,qBAAqB,CACpBnsB,OAAQ,CAAEmvB,EAAGoG,GAAmBj4B,OAAQ,YAEzCwD,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACR03B,GAAmB13B,QAEnB03B,GAAmB,OAGtBzzB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdwzB,GAAmB,SAGxB,OACF,CAACC,KAEJnwB,qBAAU,WACe,MAAnB0f,EAAQ3pB,SACVorB,GAAiBzB,EAAQ3pB,WAG1B,CAAC2pB,EAAQ3pB,UAEZiK,qBAAU,WACgC,OAApC08B,EAAwBh9B,SAC1BoqB,aAAa4S,EAAwBh9B,SAGvCg9B,EAAwBh9B,QAAU1F,YAAW,WAC3C0iC,EAAwBh9B,QAAU,KAClC1E,GACG0zB,kBAAkB,CACjB9zB,OAAQ,CAAE4K,KAAyB,KAAnB4iB,GAAUhxB,KAAcgxB,GAAUhxB,KAAO,SAE1DsE,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRoxB,IAAgB,SAAAtB,GAAa,sBACxBA,EADwB,CAE3BlxB,KAAMoB,EAAK2nB,kBAGbyJ,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBlxB,KAAM,WAG/DqF,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdktB,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBlxB,KAAM,aAE/D,OACF,CAACgxB,GAAUhxB,OAEd4I,qBAAU,WACkC,OAAtC2kC,EAA0BjlC,SAC5BoqB,aAAa6a,EAA0BjlC,SAGzCilC,EAA0BjlC,QAAU1F,YAAW,WAC7C2qC,EAA0BjlC,QAAU,KACpC1E,GACGwoC,oBAAoB,CACnB5oC,OAAQ,CACN5D,OAA6B,KAArBoxB,GAAUpxB,OAAgBoxB,GAAUpxB,OAAS,SAGxD0E,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRoxB,IAAgB,SAAAtB,GAAa,sBACxBA,EADwB,CAE3BtxB,OAAQwB,EAAK2nB,kBAGfyJ,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBtxB,OAAQ,WAGjEyF,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdktB,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBtxB,OAAQ,aAEjE,OACF,CAACoxB,GAAUpxB,SAEdgJ,qBAAU,WAC+B,OAAnCw8B,GAAuB98B,SACzBoqB,aAAa0S,GAAuB98B,SAGtC88B,GAAuB98B,QAAU1F,YAAW,WAC1CwiC,GAAuB98B,QAAU,KACjC1E,GACGyoC,gBAAgB,CACf7oC,OAAQ,CAAEoY,IAAuB,KAAlBoV,GAAUpV,IAAaoV,GAAUpV,IAAM,SAEvDtX,MAAK,SAAA1F,GACJ,GAAIA,EAASwC,KAAM,CAAC,IACVA,EAASxC,EAATwC,KACRoxB,IAAgB,SAAAtB,GAAa,sBACxBA,EADwB,CAE3BtV,IAAKxa,EAAK2nB,kBAGZyJ,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBtV,IAAK,WAG9DvW,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACdktB,IAAgB,SAAAtB,GAAa,sBAAUA,EAAV,CAAyBtV,IAAK,aAE9D,OACF,CAACoV,GAAUpV,MAEd,IAAMiZ,GAAoBjD,mBAAQ,kBAAMmI,GAAmBlzB,EAAMjB,QAAO,CACtEiB,EAAMjB,OAGFgoC,GAAwBhc,mBAC5B,kBACE,CACErhB,MAAOhB,EAAE,oBACT3I,MAAO,KAHX,2BAKK1F,SALL,IAKKA,QALL,EAKKA,GAAsB4E,KAAI,SAAAC,GAAE,MAAK,CAClCwK,MAAOhB,EAAE,SAAD,OAAUxJ,IAClBa,MAAOb,UAGX,CAACwJ,IAGG0qB,GAA+BjnB,uBACnC,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,OAAI0zB,GAAyBjrB,EAAMzI,MAC5C,CAAC0zB,KAEGgN,GAA0BrzB,uBAC9B,SAAA5E,GAAI,OAAI,SAAAzI,GAAC,OAAIyzB,GAAehrB,EAAMzI,EAAEwI,OAAOvH,UAC3C,CAACwyB,KAGGe,GAAqBnnB,uBACzB,SAAA5E,GAAI,OAAI,SAACzI,EAAG+rB,GAAJ,OAAiB0H,GAAehrB,EAAMsjB,MAC9C,CAAC0H,KAGGyU,GAA4Bjc,mBAChC,kBAC2B,MAAzBmG,GAAA,aAEOA,GAAsBjyB,KAAI,SAAAC,GAAE,sBAC1BA,EAD0B,CAE7BwK,MAAOhB,EAAE,SAAD,OAAUxJ,EAAGwK,cAGvB,KACN,CAAChB,IAGG+qB,GAAgB1I,mBACpB,0BACE,kBAAC,IAAMvU,SAAP,CAAgBte,IAAI,kBAClB,kBAACqT,GAAD,CACExL,MAAOoqB,GAAUpV,IACjBlO,SAAUusB,GAA6B,OACvCpqB,WAAYuV,EAAQxJ,IACpB9L,cAAeqqB,GAAmB,OAClCpqB,QAASmhB,GAActV,IACvBrL,MAAOhB,EAAE,aACTnB,KAAK,MACLU,QAAQ,WACR/D,GAAG,MATL,oDAWA,kBAACqH,GAAD,CACExL,MAAOoqB,GAAUhxB,KACjB0N,SAAUusB,GAA6B,QACvCpqB,WAAYuV,EAAQplB,KACpB8P,cAAeqqB,GAAmB,QAClCpqB,QAASmhB,GAAclxB,KACvBuQ,MAAOhB,EAAE,cACTnB,KAAK,OACLU,QAAQ,WACR/D,GAAG,OATL,oDAWA,kBAACqH,GAAD,CACExL,MAAOoqB,GAAUpxB,OACjB8N,SAAUusB,GAA6B,UACvCpqB,WAAYuV,EAAQxlB,OACpBkQ,cAAeqqB,GAAmB,UAClCpqB,QAASmhB,GAActxB,OACvB2Q,MAAOhB,EAAE,gBACTnB,KAAK,SACLU,QAAQ,WACR/D,GAAG,SATL,oDAWA,kBAAC4N,GAAD,CACE/R,MAAK,iBAAEwe,QAAF,IAAEA,OAAF,EAAEA,EAASpK,gBAAX,QAAuB,GAC5BtN,SAAU24B,GAAwB,YAClC91B,MAAOhB,EAAE,gBACTQ,QAAS89B,GACT9iC,GAAG,WALL,8CAOA,kBAAC4N,GAAD,CACE/R,MAAK,iBAAEwe,QAAF,IAAEA,OAAF,EAAEA,EAASnJ,gBAAX,QAAuB,GAC5BvO,SAAU24B,GAAwB,YAClC91B,MAAOhB,EAAE,cACTQ,QAAS69B,GACT7iC,GAAG,WALL,iDASJ,CACEqa,EACA6U,GACA4T,GACAD,GACAvH,GACAlM,GACAjJ,GACA3hB,EACAyhB,KAIEuJ,GAAqBvnB,uBAAY,WACrCumB,KACAJ,IAAe,KACd,CAACI,KAEEiB,GAAexnB,uBAAY,WAC/BulB,GAAc,GACdY,IAAe,KACd,IAEGsB,GAAiB7I,mBACrB,kBACE,kBAAC,IAAMvU,SAAP,CAAgBte,IAAI,mBAClB,kBAACyuB,GAAD,CACEvY,QAASslB,GACT9iB,SAAUyU,GAAYD,WAFxB,6CAIG1c,EAAE,gBAEL,kBAACie,GAAD,CACElX,KAAK,UACLrB,QAASulB,GACT/iB,SAAUyU,GAAYD,WAHxB,6CAKG1c,EAAE,mBAIT,CAACgrB,GAAoBC,GAActO,GAAYD,WAAY1c,IAGvDorB,GAAkB/I,mBACtB,iBAAM,CACJ,CACExrB,KAAMA,EACNmK,MAAO,iBACP0E,QAAS,kBAAMu4B,GAAsB,QAEvC,CACEpnC,KAAM,GACNmK,MAAM,GAAD,OAAKhB,EAAEoF,IAAP,YACa,MAAhBs4B,GAAA,YAA4BA,GAAarxB,KAAQ,QAIvD,CAACqxB,GAAc7mC,EAAMmJ,EAAGoF,GAAO64B,KAG3B5S,GAAe5nB,uBAAY,kBAAMof,GAAQ,KAAO,IAChD0I,GAAoB9nB,uBAAY,kBAAMulB,GAAc,KAAO,IAE3DwC,GAAiB/nB,uBAAY,kBAAMmmB,IAAe,KAAQ,IAC1D6B,GAAgBhoB,uBAAY,kBAAMmmB,IAAe,KAAO,IAExD0B,GAAUjJ,mBACd,kBACkB,MAAhBqb,IAAuC,MAAfC,GACI,MAAxBA,GAAY1zB,SACV,CAAC0zB,IACD,KACFG,EAAW3rB,QACjB,CAACurB,GAAcC,GAAaG,EAAW3rB,QAGnCb,GAAkB+Q,mBAAQ,kBAAMhkB,GAAa6mB,GAAQ,cAAa,CACtE7mB,EACA6mB,KAGIvP,GAAgB0M,mBACpB,kBACmC,OAAjB,OAAhBT,SAAgB,IAAhBA,QAAA,EAAAA,GAAkBU,aACd,CACA,CAACV,GAAiBU,YAAY,GAAIV,GAAiBU,YAAY,IAC/D,CAACV,GAAiBU,YAAY,GAAIV,GAAiBU,YAAY,KAE/D,OACN,QAACV,SAAD,IAACA,QAAD,EAACA,GAAkBU,cAGfL,GAAiBxe,uBAAY,SAAA/C,GAAK,OAAI+oB,GAAqB/oB,KAAQ,IACnEwhB,GAAsBze,uBAC1B,SAAC/C,EAAOyhB,GAAR,OAAqBN,GAAoBM,KACzC,IAGI1hB,GAAiBgD,uBAAY,SAAAtC,GAAM,OAAIA,EAAOE,cAAa,IAE3D+gB,GAAiBC,mBACrB,iBAAO,CACLhrB,MAAOmyB,GACPrrB,SAAU8jB,GACV3hB,WAAYshB,GACZrhB,cAAe2hB,GACf1hB,QAAS8oB,GACTtoB,MAAOhB,EAAE,uBACTS,eAAgBA,MAElB,CACE+oB,GACA5H,GACAnhB,GACA6oB,GACArH,GACAC,GACAliB,IAIJ,OACE,kBAAC,GAAD,yCACE,kBAAC,GAAD,+CACE,kBAAC2rB,GAAD,CAAkB/M,MAAOwM,GAAzB,kDACC9F,IAAqC,MAAhBoY,IACpB,kBAAC,GAAD,+CACE,kBAACzf,GAAD,CACElX,KAAK,UACLrB,QAAS2lB,GACTnjB,SAAUyU,GAAYD,WAHxB,6CAKG1c,EAAE,cAEL,kBAACie,GAAD,CACElX,KAAK,UACLrB,QAASukB,GACT/hB,SAAUyU,GAAYD,WACtBtV,QAASpH,EAAE,cAJb,6CAME,kBAAC4rB,GAAD,CAAY/xB,OAAQ,GAAID,MAAO,GAAIc,KAAK,qBAAxC,4CACA,2BACEqM,KAAK,OACLjJ,IAAK4rB,GACLvrB,SAAU4e,GACV8O,OAAO,6GACPjvB,MAAO,CAAE0E,QAAS,QALpB,yCAQAlH,EAAmBT,WACnB,kBAACskB,GAAD,CACE7W,QAASpH,EAAE,WACX+G,KAAK,UACLrB,QAAS+lB,GAHX,6CAKE,kBAAC,KAAD,CACE/oB,MAAM,YACNnD,QAAQ,MACRusB,UACEh6B,KAAKC,UAAU8jB,KAAa/jB,KAAKC,UAAUwjC,GAJ/C,sCAOE,kBAACxJ,GAAD,CACElyB,OAAQ,GACRD,MAAO,GACPc,KAAK,qBAHP,gDAWK,MAAhBgjC,IACC,kBAAC,GAAD,gDACE,kBAAC,GAAD,4CAAa,CAAC3S,GAAeG,MAGjC,kBAAC,GAAD,mDACE,kBAAC,GAAD,4CACE,kBAAC,GAAD,CACEr5B,KAAMy5B,GACNte,aAAW,EACXjG,KAAK,QACLuK,gBAAiBA,GACjB+C,YAAaA,EACbpK,SAAUA,EACVsH,SAAUmsB,GACV9nB,aAActE,GACdyF,OAAQqL,GACRzM,cAAeA,GAVjB,+CAaDrE,IAAmB,oCAAG8X,KAEzB,kBAAC,IAAD,wCACE,kBAAC,IAAD,CAAOvyB,KAAI,UAAKA,EAAL,QAAiBu1B,OAAK,EAAjC,sCACE,kBAAC,GAAD,CACEmQ,gBAAiB0B,GACjBP,aAAcA,GACdrpB,YAAaA,EACbpK,SAAUA,EACV5L,UAAWA,EACX2mB,aAAcA,EACd4M,gBAAiBA,GACjB9O,SAAUA,GACVmC,iBAAkBA,GAClBC,QAASA,GACTG,YAAaA,GACbC,kBAAmBA,GACnBC,OAAQA,GACRoY,YAAaA,GACbC,eAAgBA,GAflB,+CAkBF,kBAAC,IAAD,CAAO/mC,KAAMA,EAAMu1B,OAAK,EAAxB,sCACE,kBAAC,GAAD,CACExrB,QAASA,EACTuR,MAAO2rB,EAAW3rB,MAClB+qB,WAAYY,EAAWZ,WACvBj6B,QAASA,GACTs5B,gBAAiB0B,GACjB1d,KAAMA,EACNsC,QAASA,EACT+O,gBAAiBA,GACjB9O,SAAUA,GACV1V,WAAYA,EACZkM,cAAeA,EACfyJ,WAAYwI,GAZd,4CAeF,kBAAC,IAAD,CAAO10B,KAAK,IAAZ,sCACE,kBAAC,IAAD,CAAUsV,GAAItV,EAAd,4CAGJ,kBAAC,GAAD,CACE0pB,KAAMoJ,GACNjJ,QAAS8K,GACT9D,OAAQqD,GACRnD,QAASsD,GACT9lB,MAAOpF,EAAE,WALX,kDAWA5C,GAAUK,UAAOgM,IAAV,iEAAGhM,CAAH,yFAOT,qBAAGmd,MAAkBxsB,aAApB,SAKC+9B,GAAa1uB,UAAOgM,IAAV,oEAAGhM,CAAH,8CAMVyuB,GAAoBzuB,UAAOgM,IAAV,2EAAGhM,CAAH,sIASjBiuB,GAAgBjuB,UAAOgM,IAAV,uEAAGhM,CAAH,2EAMf,qBAAGmd,MAAkBxsB,aAApB,SAOC4vB,GAAgBvgB,UAAOgM,IAAV,uEAAGhM,CAAH,oGAKf,qBAAGmd,MAAkBxsB,aAApB,SAOC49B,GAAiBvuB,UAAOgM,IAAV,wEAAGhM,CAAH,wBAIdwuB,GAAaxuB,UAAOgM,IAAV,oEAAGhM,CAAH,sBAEZ,qBAAGmd,MAAkBxsB,aAApB,SClqBUoM,OA7Kf,SAAuB7E,GACrB,OACE,qCACE6F,GAAG,yDACHR,EAAG,EACHH,EAAG,EACHJ,QAAQ,iBACRqC,SAAS,YACLnH,EANN,uDAQE,gFAEI,gcAGJ,0BAAQwpB,UAAU,wBAAwB9jB,GAAI,MAAOC,GAAI,IAAKC,EAAG,IAAjE,yDACA,wBACE4jB,UAAU,wBACVhkB,EAAE,wCAFJ,uDAIA,wBACEgkB,UAAU,wBACVhkB,EAAE,gFAFJ,uDAIA,wBACEgkB,UAAU,wBACVhkB,EAAE,8CAFJ,uDAIA,wBACEA,EAAE,uGACFT,KAAK,UAFP,uDAIA,wBACES,EAAE,oJACFsiB,QAAS,GAFX,uDAIA,2BACE0B,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJR,GAAI,IACJwjB,GAAI,KALN,0DAOA,2BACEa,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJR,GAAI,IACJwjB,GAAI,KALN,0DAOA,2BACEa,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJR,GAAI,IACJwjB,GAAI,KALN,0DAOA,2BACEa,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJR,GAAI,IACJwjB,GAAI,KALN,0DAOA,wBACEa,UAAU,wBACVhkB,EAAE,gIAFJ,uDAIA,wBACEgkB,UAAU,wBACVhkB,EAAE,kGAFJ,uDAIA,wBACEgkB,UAAU,wBACVhkB,EAAE,kKAFJ,uDAIA,wBACEgkB,UAAU,wBACVhkB,EAAE,kHAFJ,uDAIA,wBACEgkB,UAAU,wBACVhkB,EAAE,kCAFJ,uDAIA,0BAAQgkB,UAAU,wBAAwB9jB,GAAI,MAAOC,GAAI,MAAOC,EAAG,EAAnE,yDACA,wBACE4jB,UAAU,wBACVhkB,EAAE,iSAFJ,uDAIA,wBACEgkB,UAAU,wBACVhkB,EAAE,mIAFJ,uDAIA,2BACEgkB,UAAU,wBACV9jB,GAAI,OACJC,GAAI,MACJR,GAAI,IACJwjB,GAAI,IALN,0DAOA,0BACEa,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJC,EAAG,KAJL,yDAMA,wBACE4jB,UAAU,wBACVhkB,EAAE,sCAFJ,uDAIA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,2BAA1C,uDACA,wBACEgkB,UAAU,wBACVhkB,EAAE,qEAFJ,uDAIA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,wBAAMgkB,UAAU,wBAAwBhkB,EAAE,wBAA1C,uDACA,0BAAQgkB,UAAU,wBAAwB9jB,GAAI,MAAOC,GAAI,IAAKC,EAAG,GAAjE,yDACA,wBACE4jB,UAAU,wBACVhkB,EAAE,6CAFJ,uDAIA,2BACEgkB,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJR,GAAI,GACJwjB,GAAI,IALN,0DAOA,2BACEa,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJR,GAAI,GACJwjB,GAAI,IALN,0DAOA,0BAAQa,UAAU,yBAAyB9jB,GAAI,MAAOC,GAAI,IAAKC,EAAG,GAAlE,yDACA,0BAAQ4jB,UAAU,wBAAwB9jB,GAAI,MAAOC,GAAI,IAAKC,EAAG,EAAjE,yDACA,wBACE4jB,UAAU,wBACVhkB,EAAE,+FAFJ,uDAIA,2BACEJ,UAAU,kCACVokB,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJR,GAAI,KACJwjB,GAAI,KANN,0DAQA,2BACEvjB,UAAU,kCACVokB,UAAU,wBACV9jB,GAAI,MACJC,GAAI,MACJR,GAAI,KACJwjB,GAAI,KANN,0DAQA,wBACEa,UAAU,yBACVhkB,EAAE,yEAFJ,yD,qGC7JS,IAoBTiC,GAAUK,UAAOgM,IAAV,2EAAGhM,CAAH,mHAGD,qBAAG5D,UAOT2kB,GAAiB/gB,UAAOgM,IAAV,kFAAGhM,CAAH,uDAMhB,qBAAGmd,MAAkBxsB,aAApB,SAMCiP,GAAQI,UAAO2gB,GAAV,yEAAG3gB,CAAH,yHASLghB,GAAUhhB,UAAO0Z,EAAV,2EAAG1Z,CAAH,8GASPihB,GAAajhB,kBAAO2Z,KAAV,8EAAG3Z,CAAH,yFCtDDjD,OAdf,SAAuB7E,GACrB,OACE,qCACEgF,MAAM,6BACNf,MAAO,GACPC,OAAQ,GACRY,QAAQ,aACJ9E,EALN,6CAOE,wBAAM+E,KAAM/E,EAAM+E,KAAMS,EAAE,mEAA1B,+CCLAojC,GAAcxtC,EAAe,2BAE7BirB,GAAc,CAClBwiB,MAAO,CAACtiB,GvE6BkB,SAAC7kB,EAAOP,GAGlC,MADc,uJACH2nC,KAAKpnC,GAIT,CAAEuE,QAAQ,GAHR,CAAEA,QAAQ,EAAOxM,QAHV,YuERHiF,GAnBD,CACZ+nB,cAAe,CACboiB,MAAO,CAAEnnC,MAAO,KAElBqnC,QAAS,SAACnjB,EAAMc,GACd,OAAO3pB,QAAQU,UAAU2B,MAAK,WAC5B,IAAMunB,EAAaJ,GAAsBX,EAAMS,IAC/C,GAAIM,EAAWZ,QAEb,MADAW,EAAQ,eAAKC,EAAWf,OAClB,IAAIpsB,EAEZktB,EAAQ,eAAKC,EAAWf,OAExB,IAAMtnB,EAASsoB,KAAUhB,GAAM,qBAAGlkB,SAClC,OAAOlF,IAAM+C,KAAKqpC,GAAX,eAA6BtqC,S,wMCJ1C,IAoJeoG,OApJS,SAAC,GAA2B,EAAzBlD,SAA0B,IAAD,MAAZxB,EAAY,4BAC1C4B,EAAYiB,qBAAWC,IAAvBlB,QACA6C,EAAuBzE,EAAvByE,mBAEA4F,EAAMC,cAAND,EAJ0C,EAK1BtH,mBAASrE,GAAM+nB,eALW,mBAK3Cb,EAL2C,KAKrCc,EALqC,OAMZ3jB,mBAAS,CAC7C+jB,cAAc,EACdC,YAAY,EACZjqB,MAAO,OATyC,mBAM3CkqB,EAN2C,KAM9BC,EAN8B,KAY5CE,EAAerZ,uBAAY,SAAA/C,GAC/BA,EAAMoI,iBACN8T,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBlqB,MAAO,KACPgqB,cAAc,EACdC,YAAY,OAEdroB,GACGqqC,QAAQnjB,GAAM,SAAAA,GAAI,OAAIc,EAAQ,eAAKd,OACnCxmB,MAAK,SAAA1F,GACJutB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBoC,SAAS,EACTrC,YAAY,UAGf5mB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACH,MAAPA,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,cAEU,MAAhBsC,EAAI1G,UAAyC,MAArB0G,EAAI1G,SAASwC,KACvC+qB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,EACZjqB,MAAOuN,EAAE,uBAGX4c,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,YAInB,CAACnlB,EAASgkB,EAAMvb,IAEb+c,EAAetZ,uBAAY,SAACjU,EAAK6H,GACrCglB,EAAQ,eACHd,EADE,gBAEJ/rB,EAFI,eAGA+rB,EAAK/rB,GAHL,CAIH6H,MAAOA,SAGV,CAACkkB,IAEEyB,EAAwBvZ,uBAC5B,SAAA5E,GAAI,OAAI,SAAAzI,GACN2mB,EAAale,EAAMzI,EAAEwI,OAAOvH,UAE9B,CAAC0lB,IAGH,OACE,kBAAC,GAAD,mDACE,kBAAC,GAAD,oDACA,kBAAC,GAAD,CACEI,IAAKC,GACLC,IAAI,gBACJzgB,MAAO,CACLhD,MAAO,OACPC,OAAQ,OACR2c,SAAU,WACV3G,QAAS,GACTyN,KAAM,EACNC,IAAK,EACLC,UAAW,QACXC,QAAS,IAEX7c,QAAQ,QAbV,2DAeA,kBAAC8c,GAAD,CAAW7jB,OAAO,OAAlB,oDACG8iB,EAAYoC,SACX,kBAAC4f,GAAD,0DACE,kBAAC,GAAD,iDAAQ3+B,EAAE,qBACV,kBAAC,GAAD,0DAAiBA,EAAE,oBACnB,kBAAC4+B,GAAD,CAAYzyB,GAAG,UAAf,qDAA0BnM,EAAE,oBAGvB,MAARub,IAAiBoB,EAAYoC,SAC5B,kBAAC,GAAD,CAAYnB,SAAUd,EAAtB,qDACE,kBAAC+hB,GAAD,wDACE,kBAACC,GAAD,CAAa3yB,GAAG,UAAhB,sDACE,kBAAC4yB,GAAD,CACEllC,OAAQO,EAAmBT,UAAY,SAAW,UAClDC,MAAOQ,EAAmBT,UAAY,SAAW,UACjDe,KAAK,uBAHP,0DAMF,kBAAC,GAAD,iDAAQsF,EAAE,sBAEZ,kBAAC,GAAD,wDACE,kBAAC,GAAD,CACE+G,KAAK,OACL1P,MAAK,iBACHkkB,QADG,IACHA,GADG,UACHA,EAAMijB,aADH,aACH,EAAannC,aADV,QACmB,GAExBwH,KAAK,QACLmC,MAAOhB,EAAE,SACT7B,SAAU6e,EAAsB,SAChCvqB,MACEkqB,EAAYF,cACE,MAAdlB,EAAKijB,OACiB,MAAtBjjB,EAAKijB,MAAMpvC,QAEb+P,WACEwd,EAAYF,cACY,OAApB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMijB,aAAN,eAAapvC,SACT4Q,EAAE,UAAD,OAAWub,EAAKijB,MAAMpvC,UACvB,GAEN0uB,aAAa,QACb2E,UAAW,EApBb,0DAwBoB,MAArB9F,EAAYlqB,OACX,kBAAC,GAAD,qDAAYkqB,EAAYlqB,OAE1B,kBAAC,GAAD,yDACE,kBAACwrB,GAAD,CAAclX,KAAK,UAAUmB,SAAUyU,EAAYD,WAAnD,uDACG1c,EAAE,4BAgBb5C,GAAUK,UAAOgM,IAAV,2EAAGhM,CAAH,mHAGD,qBAAG5D,UAOT8jB,GAAalgB,UAAO8d,KAAV,8EAAG9d,CAAH,uOAYZ,qBAAGmd,MAAkBxsB,aAApB,SAMCuwC,GAAiBlhC,UAAOgM,IAAV,kFAAGhM,CAAH,uOAYhB,qBAAGmd,MAAkBxsB,aAApB,SAMC4wC,GAAiBvhC,UAAO0Z,EAAV,kFAAG1Z,CAAH,8EAOdogB,GAAepgB,UAAOgM,IAAV,gFAAGhM,CAAH,oDAMZugB,GAAgBvgB,UAAOgM,IAAV,iFAAGhM,CAAH,gHAQbsgB,GAAYtgB,UAAO0Z,EAAV,6EAAG1Z,CAAH,uFAOTyf,GAAkBzf,UAAO0gB,IAAV,mFAAG1gB,CAAH,oHASL,gBAAG0f,EAAH,EAAGA,IAAH,oBAAoBA,EAApB,uBAGVF,GAAUxf,UAAOgM,IAAV,2EAAGhM,CAAH,qIAWPJ,GAAQI,UAAO2gB,GAAV,yEAAG3gB,CAAH,QACP4gB,IAGEwgB,GAAephC,UAAOgM,IAAV,iFAAGhM,CAAH,2EAOZqhC,GAAcrhC,kBAAO2Z,KAAV,gFAAG3Z,CAAH,gEAMXmhC,GAAanhC,kBAAO2Z,KAAV,+EAAG3Z,CAAH,8M,6GC1RD,qBAAGtG,SAAH,IAAgBxB,EAAhB,mCACb,kBAAC,GAAD,iBAAaA,EAAb,wDACE,kBAACspC,GAAA,EAAD,mEAIE7hC,GAAUK,UAAOgM,IAAV,8EAAGhM,CAAH,iLAaT,qBAAGmd,MAAkBxsB,aAApB,SCpBC8wC,GAAcnuC,EAAe,uBAC7BoD,GAAcpD,EAAe,eAC7BouC,GAAepuC,EAAe,sBAyCrBsD,GAvCD,CACZ+qC,YAAa,SAAA5+B,GAAO,OAClB9N,QAAQU,UAAU2B,MAAK,WACrB,OAAO5C,IAAMuC,IAAIyqC,GAAc3+B,OAEnC6+B,wBAAyB,WACvB,OAAO3sC,QAAQU,UAAU2B,MAAK,WAC5B,OAAO5C,IAAMuC,IAAIwqC,QAGrBI,aAAc,SAAAC,GACKptC,IAAMqtC,SAGpB9qC,IADH,UACU1D,IADV,OAC2BuuC,GAAW,CAClCE,aAAc,SAEf1qC,MAAK,SAAA1F,GACJ,IAAMqwC,EAAMjzC,OAAOkzC,IAAIC,gBAErB,IAAIC,KAAK,CAACxwC,EAASwC,MAAO,CAAEkV,KAAM,qBAK9B+4B,EAAOrH,SAASsH,cAAc,KACpCD,EAAKE,KAAON,EACZI,EAAKlhC,OAAS,SACdkhC,EAAKG,aAAa,WAAY,cAC9BxH,SAAS1U,KAAKmc,YAAYJ,GAC1BA,EAAK5V,QACLuO,SAAS1U,KAAKoc,YAAYL,OAGhCM,YAAa,WACX,OAAOjuC,IAAMuC,IAAIP,M,uLCnBrB,IA4GeksC,GA5GC,SAAC,GAA2B,EAAzBlpC,SAAyB,4BAAC,IAGrCrE,EAAQrG,OAAOsG,aAAaC,QAAQ,gBACpCstC,EAAc1nC,iBAAO,MACrB1F,EAAU0F,iBAAO,KACjBC,EAAUD,iBAAO,MANmB,EASZF,oBAAS,GATG,mBASnCkI,EATmC,KAS1BioB,EAT0B,OAUFnwB,mBAAS,MAVP,mBAUnC6nC,EAVmC,KAUrBC,EAVqB,KAYpCC,EAAmBh9B,uBAAY,SAAAi9B,GACR,MAAvBJ,EAAYvnC,SACd1E,GACG+qC,cACArqC,MAAK,SAAA4rC,GACJL,EAAYvnC,SAAU,EAClB2nC,GACF7X,GAAW,GAET8X,EAAI9uC,MACN2uC,EAAgBG,EAAI9uC,SAGvBiE,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QACd6qC,cAAc/nC,EAAQE,SACtBunC,EAAYvnC,QAAU,KACtBynC,EAAgB,MAChBC,GAAiB,QAGtB,IAEHpnC,qBAAU,WAMR,OALAonC,IACA5nC,EAAQE,QAAU8nC,aAAY,WAC5BP,EAAYvnC,QAAU,KACtB0nC,MACCvtC,EAAQ6F,SACJ,WACL6nC,cAAc/nC,EAAQE,YAGvB,IAwBH,IAAM+nC,EAAgBr9B,uBAAY,SAAArN,GAAC,OAAIyyB,GAAW,KAAQ,IAC1D,OACE,kBAAC,GAAD,2CACGjoB,EAAU,kBAACmgC,GAAD,oDAAsB,KAEjC,kBAAC,GAAD,iDACE,kBAACpV,GAAD,CACE9Q,OAAQ,EACR+D,MAAO,CACL,CACE/nB,KAAM,YACNmK,MAAO,qBALb,qDAgBe,MAAhBu/B,GACC,4BACE3jC,MAAO,CACLhD,MAAO,OACPC,OAAQ,OACRmnC,YAAa,MACbj1B,gBAAiB,WAEnB3G,MAAM,WACN+X,IAAG,iBAAKojB,QAAL,IAAKA,OAAL,EAAKA,EAAcU,QAAnB,sCAAwDnuC,EAAxD,wDAAsGytC,QAAtG,IAAsGA,OAAtG,EAAsGA,EAAcU,SAApH,cAA8HV,QAA9H,IAA8HA,OAA9H,EAA8HA,EAAcW,aAC/IC,OAAQL,EATV,4CAkBF1jC,GAAUK,UAAOgM,IAAV,uEAAGhM,CAAH,wHA+BPiuB,GAAgBjuB,UAAOgM,IAAV,6EAAGhM,CAAH,0FAOf,qBAAGmd,MAAkBxsB,aAApB,SCrKCgzC,GAAmBrwC,EAAe,2BAElCirB,GAAc,CAClBG,SAAU,CAACD,IACXmlB,gBAAiB,CAACnlB,IAClBppB,MAAO,IAkCMuB,GA/BD,CACZ+nB,cAAe,CACbD,SAAU,CAAE9kB,MAAO,IACnBgqC,gBAAiB,CAAEhqC,MAAO,IAC1BvE,MAAO,CAAEuE,MAAO,OAElBiqC,YAAa,SAAC/lB,EAAMc,GAClB,OAAO3pB,QAAQU,UAAU2B,MAAK,WAC5B,I5E8CyBonB,EAAUolB,E4E9C7BjlB,EAAaJ,GAAsBX,EAAMS,IACzCwlB,G5E6CmBrlB,E4E5CvBZ,EAAKY,SAAS9kB,M5E4CmBkqC,E4E3CjChmB,EAAK8lB,gBAAgBhqC,M5E8Cb,MAAZ8kB,GAAuC,MAAnBolB,GAA2BplB,IAAaolB,EAKvD,CAAE3lB,OAAO,EAAMvkB,MAAOkqC,GAHpB,CAAE3lB,OAAO,EAAOxsB,QAJT,kBAIkBiI,MAAOkqC,I4E9CrC,GAAIjlB,EAAWZ,UAAY8lB,EAAmB5lB,MAQ5C,MAPAS,EAAQ,eACHC,EAAWf,KADT,CAEL8lB,gBAAgB,eACX/kB,EAAWf,KAAK8lB,gBADN,GAEVG,MAGD,IAAIryC,EAEZktB,EAAQ,eAAKC,EAAWf,OAExB,IAAMtnB,EAASsoB,KAAUhB,GAAM,qBAAGlkB,SAClC,OAAOlF,IAAM+C,KAAKksC,GAAX,eAAkCntC,S,wMCnB/C,IAkLewtC,GAlLQ,SAAC,GAA2B,EAAzBtqC,SAAyB,4BAAC,IAC1CI,EAAYiB,qBAAWC,IAAvBlB,QAEAyI,EAAMC,cAAND,EAEFlN,ECvBC,IAAI4uC,gBAAgBv+B,cAAc4T,QDuBrBriB,IAAI,SALyB,EAMzBgE,mBAASrE,GAAM+nB,eANU,mBAM1Cb,EAN0C,KAMpCc,EANoC,OAOX3jB,mBAAS,CAC7C+jB,cAAc,EACdC,YAAY,EACZjqB,MAAO,KACPssB,SAAS,IAXsC,mBAO1CpC,EAP0C,KAO7BC,EAP6B,KAcjDvjB,qBAAU,WACK,MAATvG,GACFiqB,EAAa,QAASjqB,KAGvB,IAEH,IAAMgqB,EAAerZ,uBACnB,SAAA/C,GACEA,EAAMoI,iBAEN8T,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBlqB,MAAO,KACPgqB,cAAc,EACdC,YAAY,OAEdroB,GACGitC,YAAY/lB,GAAM,SAAAA,GAAI,OAAIc,EAAQ,eAAKd,OACvCxmB,MAAK,SAAA1F,GACJutB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBoC,SAAS,EACTrC,YAAY,UAGf5mB,OAAM,SAAAC,GACLC,QAAQC,IAAI,CAAEF,QAEH,MAAPA,GAA+B,MAAhBA,EAAI1G,UACrBkI,EAAQ9D,cAEU,MAAhBsC,EAAI1G,UAAyC,MAArB0G,EAAI1G,SAASwC,KACvC+qB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,EACZjqB,OAAO,OAGTmqB,GAAe,SAAAD,GAAW,sBACrBA,EADqB,CAExBD,YAAY,YAKtB,CAACnlB,EAASgkB,IAGNwB,EAAetZ,uBACnB,SAACjU,EAAK6H,GACJglB,EAAQ,eACHd,EADE,gBAEJ/rB,EAFI,eAGA+rB,EAAK/rB,GAHL,CAIH6H,MAAOA,SAIb,CAACkkB,IAGGyB,EAAwBvZ,uBAC5B,SAAA5E,GAAI,OAAI,SAAAzI,GACN2mB,EAAale,EAAMzI,EAAEwI,OAAOvH,UAE9B,CAAC0lB,IAGG4kB,EAAYl+B,uBAAY,WAC5B,GAAa,MAAT3Q,EAAe,CACgD,IAAD,kBAAhE,GAAY,MAARyoB,IAAiBoB,EAAYoC,UAAYpC,EAAYlqB,MACvD,OACE,kBAAC,GAAD,CAAYmrB,SAAUd,EAAtB,iDACE,kBAAC,GAAD,oDACE,kBAAC,GAAD,6CAAQ9c,EAAE,wBAEZ,kBAAC,GAAD,oDACE,kBAAC,GAAD,CACE+G,KAAK,WACL1P,MAAK,iBAAEkkB,QAAF,IAAEA,GAAF,UAAEA,EAAMY,gBAAR,aAAE,EAAgB9kB,aAAlB,QAA2B,GAChCwH,KAAK,WACLmC,MAAOhB,EAAE,YACT7B,SAAU6e,EAAsB,YAChCvqB,MACEkqB,EAAYF,cAA2C,OAAvB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMY,gBAAN,eAAgB/sB,SAE9C+P,WACEwd,EAAYF,cAA2C,OAAvB,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAMY,gBAAN,eAAgB/sB,SACxC4Q,EAAE,UAAD,cAAWub,QAAX,IAAWA,GAAX,UAAWA,EAAMY,gBAAjB,aAAW,EAAgB/sB,UAC5B,GAEN0uB,aAAa,eACb2E,UAAW,EAfb,qDAiBA,kBAAC,GAAD,CACE1b,KAAK,WACL1P,MAAK,iBAAEkkB,QAAF,IAAEA,GAAF,UAAEA,EAAM8lB,uBAAR,aAAE,EAAuBhqC,aAAzB,QAAkC,GACvCwH,KAAK,WACLmC,MAAOhB,EAAE,mCACT7B,SAAU6e,EAAsB,mBAChCvqB,MACEkqB,EAAYF,cACsB,OAA9B,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAM8lB,uBAAN,eAAuBjyC,SAEzB+P,WACEwd,EAAYF,cACsB,OAA9B,OAAJlB,QAAI,IAAJA,GAAA,UAAAA,EAAM8lB,uBAAN,eAAuBjyC,SACnB4Q,EAAE,UAAD,OAAWub,EAAK8lB,gBAAgBjyC,UACjC,GAEN0uB,aAAa,eACb2E,UAAW,EAjBb,sDAoBF,kBAAC,GAAD,qDACE,kBAACxE,GAAD,CAAclX,KAAK,UAAUmB,SAAUyU,EAAYD,WAAnD,mDACG1c,EAAE,yBAKN,GAAI2c,EAAYoC,UAAYpC,EAAYlqB,MAC7C,OACE,kBAAC,GAAD,sDACE,kBAACwsB,GAAD,CAAaplB,OAAQ,GAAI+C,MAAO,CAAEie,OAAQ,UAA1C,mDACA,kBAAC,GAAD,sDAAiB7a,EAAE,8BACnB,kBAAC,GAAD,CAAYmM,GAAG,UAAf,iDAA0BnM,EAAE,oBAKpC,OACE,kBAAC,GAAD,sDACE,kBAACof,GAAD,CAAWvlB,OAAQ,GAAI+C,MAAO,CAAEie,OAAQ,UAAxC,iDACA,kBAAC,GAAD,sDAAiB7a,EAAE,4BACnB,kBAAC,GAAD,CAAYmM,GAAG,YAAf,iDAA4BnM,EAAE,8BAGjC,CAACub,EAAMuB,EAAcH,EAAa3c,EAAGlN,EAAOkqB,IAE/C,OACE,kBAAC,GAAD,+CACE,kBAAC,GAAD,gDACA,kBAAC,GAAD,CACEG,IAAKC,GACLC,IAAI,gBACJzgB,MAAO,CACLhD,MAAO,OACPC,OAAQ,OACR2c,SAAU,WACV3G,QAAS,GACTyN,KAAM,EACNC,IAAK,EACLC,UAAW,QACXC,QAAS,IAEX7c,QAAQ,QAbV,uDAeA,kBAAC8c,GAAD,CAAW7jB,OAAO,OAAlB,gDAA0B8nC,OAO1BvkC,GAAUK,UAAOgM,IAAV,2EAAGhM,CAAH,mHAGD,qBAAG5D,UAOTqjB,GAAkBzf,UAAO0gB,IAAV,mFAAG1gB,CAAH,oHASL,gBAAG0f,EAAH,EAAGA,IAAH,oBAAoBA,EAApB,uBAGVF,GAAUxf,UAAOgM,IAAV,2EAAGhM,CAAH,qIAWPJ,GAAQI,UAAO2gB,GAAV,yEAAG3gB,CAAH,QACP4gB,IAGEwgB,GAAephC,UAAOgM,IAAV,gFAAGhM,CAAH,2EAOZkgB,GAAalgB,UAAO8d,KAAV,8EAAG9d,CAAH,uOAYZ,qBAAGmd,MAAkBxsB,aAApB,SAMCyvB,GAAepgB,UAAOgM,IAAV,gFAAGhM,CAAH,oDAMZugB,GAAgBvgB,UAAOgM,IAAV,iFAAGhM,CAAH,gHAQbmhC,GAAanhC,kBAAO2Z,KAAV,8EAAG3Z,CAAH,8MAeVkhC,GAAiBlhC,UAAOgM,IAAV,kFAAGhM,CAAH,uOAYhB,qBAAGmd,MAAkBxsB,aAApB,SAMC4wC,GAAiBvhC,UAAO0Z,EAAV,mFAAG1Z,CAAH,8EEnOLjD,OAjFf,SAAuB7E,GACrB,OACE,qCACEgF,MAAM,6BACNinC,YAAU,UACVhoC,MAAO,IACPC,OAAQ,SACJlE,EALN,iDAOE,wBACEisC,YAAU,WACVzmC,EAAE,4MACFT,KAAK,UAHP,iDAKA,wBACEknC,YAAU,WACVzmC,EAAE,oNACFT,KAAK,UAHP,iDAKA,wBACES,EAAE,kMACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,6PACFT,KAAK,OAFP,iDAIA,wBACES,EAAE,mSACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,yjBACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,wJACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,gTACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,sFACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,+bACFT,KAAK,UAFP,iDAIA,0BAAQW,GAAI,QAASC,GAAI,QAASC,EAAG,GAAIb,KAAK,UAA9C,mDACA,wBACES,EAAE,olBACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,ooCACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,mIACFT,KAAK,UAFP,iDAIA,wBACEA,KAAK,UACLS,EAAE,4LAFJ,iDAIA,wBAAMA,EAAE,8CAA8CT,KAAK,UAA3D,iDACA,wBACES,EAAE,kJACFT,KAAK,UAFP,iDAIA,wBACES,EAAE,+RACFT,KAAK,UAFP,mD,iGCnEN,IAqBemnC,GArBU,WAAO,IACtB7hC,EAAMC,cAAND,EAOR,OALA3G,qBAAU,WACR,IAAMyoC,EAAar1C,OAAOC,SAASszC,KAEnCvzC,OAAOC,SAAWo1C,EAAW5xC,QAAQ,WAAYmB,MAChD,IAED,kBAAC,GAAD,oDACE,kBAACqsB,GAAD,CAAW7jB,OAAO,OAAlB,qDACE,kBAAC,GAAD,2DACE,kBAACkoC,GAAD,+DACA,kBAAC,GAAD,kDAAQ/hC,EAAE,WACV,kBAAC,GAAD,oDAAUA,EAAE,2BAShB5C,GAAUK,UAAOgM,IAAV,4EAAGhM,CAAH,gHAGD,qBAAG5D,UAOT2kB,GAAiB/gB,UAAOgM,IAAV,mFAAGhM,CAAH,uDAMhB,qBAAGmd,MAAkBxsB,aAApB,SAMCiP,GAAQI,UAAO2gB,GAAV,0EAAG3gB,CAAH,yHASLghB,GAAUhhB,UAAO0Z,EAAV,4EAAG1Z,CAAH,gHC3BAnH,GAAS,CACpBkmB,MAAO,CACLhtB,IAAK,QACLqP,KAAM,QACNhI,KAAM,UACN62B,UAAWlR,GACXwlB,MAAO,CAAC,UACR5V,OAAO,GAGT6V,SAAU,CACRzyC,IAAK,WACLqP,KAAM,WACNhI,KAAM,IACN62B,UAAWuU,GACXD,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAGXyrC,MAAO,CACL1yC,IAAK,QACLqP,KAAM,QACNhI,KAAM,UACN62B,UAAWwU,GACXF,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAGX0rC,SAAU,CACR3yC,IAAK,SACLqP,KAAM,WACNhI,KAAM,WACN62B,UAAWyU,GACXH,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAGX2rC,OAAQ,CACN5yC,IAAK,SACLqP,KAAM,SACNhI,KAAM,WACN62B,UAAW0U,GACXJ,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAGX4rC,MAAO,CACL7yC,IAAK,QACLqP,KAAM,QACNhI,KAAM,UACN62B,UAAW2U,GACXL,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAGX6rC,YAAa,CACX9yC,IAAK,cACLqP,KAAM,cACNhI,KAAM,UACN62B,UZzFW,YAA4B,EAAzBv2B,SAAyB,4BAAC,IAClC6I,EAAMC,cAAND,EACR,OACE,kBAAC,GAAD,+CACE,kBAAC0d,GAAD,CAAW7jB,OAAO,OAAlB,gDACE,kBAAC,GAAD,sDACE,kBAAC0oC,GAAD,CAAyB1oC,OAAO,aAAhC,+DACA,kBAAC,GAAD,6CAAQmG,EAAE,uBACV,kBAAC,GAAD,+CAAUA,EAAE,yBACZ,kBAAC,GAAD,CAAYmM,GAAG,IAAf,iDACE,kBAAC8R,GAAD,CAAclX,KAAK,UAAUnN,MAAM,OAAnC,mDACGoG,EAAE,cY+EbgiC,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAGX+rC,gBAAiB,CACfhzC,IAAK,kBACLqP,KAAM,kBACNhI,KAAM,YACN62B,UAAW8U,GACXR,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAGX4pC,QAAS,CACP7wC,IAAK,UACLqP,KAAM,UACNhI,KAAM,YACN62B,UAAW2S,GACX2B,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAEXgsC,sBAAuB,CACrBjzC,IAAK,wBACLqP,KAAM,wBACNhI,KAAM,qBACN62B,UAAWmU,GACXG,MAAO,CAAC,UACRvrC,SAAS,GAEXisC,kBAAmB,CACjBlzC,IAAK,oBACLqP,KAAM,oBACNhI,KAAM,wBACN62B,UAAWmU,GACXG,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAEXksC,YAAa,CACXnzC,IAAK,cACLqP,KAAM,cACNhI,KAAM,iBACN62B,UAAWiV,GACXX,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,GAGXmsC,SAAU,CACRpzC,IAAK,WACLqP,KAAM,WACNhI,KAAM,cACN62B,U7EjJW,YAA4B,EAAzBv2B,SAAyB,4BAAC,IAClC6I,EAAMC,cAAND,EACR,OACE,kBAAC,GAAD,4CACE,kBAAC0d,GAAD,CAAW7jB,OAAO,OAAlB,6CACE,kBAAC2kB,GAAD,mDACE,kBAACqkB,GAAD,CAAsBhpC,OAAO,YAA7B,yDACA,kBAAC,GAAD,0CAAQmG,EAAE,mBACV,kBAACye,GAAD,4CAAUze,EAAE,qBACZ,kBAAC0e,GAAD,CAAYvS,GAAG,IAAf,8CACE,kBAAC8R,GAAD,CAAclX,KAAK,UAAUnN,MAAM,OAAnC,gDACGoG,EAAE,c6EuIbgiC,MAAO,CAAC,UACR5V,OAAO,EACP31B,SAAS,IAKEqsC,OAAQxsC,ICxJRysC,GARO,SAAAzoC,GAAiB,OAAI,SAAA3E,GAAK,OAC9C,kBAACJ,GAAQgF,SAAT,MACG,gBAAGjD,EAAH,EAAGA,MAAOC,EAAV,EAAUA,QAAV,OACC,kBAAC+C,EAAD,eAAmBhD,MAAOA,EAAOC,QAASA,GAAa5B,EAAvD,4EC8BS6E,OAlCf,SAAuB7E,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,4CACE,mEACE,0BAAQ6F,GAAG,oBAAoBH,GAAI,GAAIC,GAAI,GAAIC,EAAG,GAAlD,8CACA,wBAAMC,GAAG,oBAAoBR,EAAG,EAAGH,EAAG,EAAGjB,MAAO,IAAKC,OAAQ,GAAIiB,GAAI,EAArE,6CAEF,qBAAGJ,KAAK,OAAOwB,SAAS,UAAxB,wCACE,wBAAMV,GAAG,oBAAoBd,KAAK,OAAlC,2CACE,uBAAK2B,UAAU,qBAAf,4CAEF,uBAAK3B,KAAK,UAAU2B,UAAU,qBAA9B,2CACA,qBAAGqmB,KAAK,0BAAR,wCACE,qBAAG3nB,UAAU,gBAAb,wCACE,wBAAMS,GAAG,oBAAoBd,KAAK,OAAlC,2CACE,uBAAK2B,UAAU,qBAAf,4CAEF,uBAAK3B,KAAK,OAAO2B,UAAU,qBAA3B,2CACA,wBAAM3B,KAAK,UAAUgoB,KAAK,0BAA0BvnB,EAAE,iBAAtD,4CACA,wBAAMT,KAAK,UAAUgoB,KAAK,0BAA0BvnB,EAAE,oBAAtD,4CACA,0BACET,KAAK,UACLgoB,KAAK,0BACLrnB,GAAI,OACJC,GAAI,GACJC,EAAG,OALL,mDC8CGf,OAlEf,SAAuB7E,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,sCACE,6DACE,0BAAQ6F,GAAG,oBAAoBH,GAAI,GAAIC,GAAI,GAAIC,EAAG,GAAlD,wCACA,wBAAMC,GAAG,oBAAoBR,EAAG,EAAGH,EAAG,EAAGjB,MAAO,IAAKC,OAAQ,GAAIiB,GAAI,EAArE,uCAEF,qBAAGJ,KAAK,OAAOwB,SAAS,UAAxB,kCACE,wBAAMV,GAAG,oBAAoBd,KAAK,OAAlC,qCACE,uBAAK2B,UAAU,qBAAf,sCAEF,uBAAK3B,KAAK,UAAU2B,UAAU,qBAA9B,qCACA,qBAAGqmB,KAAK,0BAAR,kCACE,qBAAG3nB,UAAU,iBAAb,kCACE,wBAAMS,GAAG,oBAAoBd,KAAK,OAAlC,qCACE,uBAAK2B,UAAU,qBAAf,sCAEF,uBAAK3B,KAAK,OAAO2B,UAAU,qBAA3B,qCACA,wBAAM3B,KAAK,UAAUgoB,KAAK,0BAA0BvnB,EAAE,iBAAtD,sCACA,wBACEA,EAAE,wPACFT,KAAK,OACLgoB,KAAK,0BAHP,sCAKA,wBACEznB,OAAO,UACP+nC,YAAa,MACbC,cAAc,QACdvgB,KAAK,0BACLvnB,EAAE,2BALJ,sCAOA,wBACEF,OAAO,UACP+nC,YAAa,MACbC,cAAc,QACdvgB,KAAK,0BACL3nB,UAAU,6BACVI,EAAE,+BANJ,sCAQA,wBACEF,OAAO,UACP+nC,YAAa,MACbC,cAAc,QACdvgB,KAAK,0BACLvnB,EAAE,8BALJ,sCAOA,wBACEF,OAAO,UACP+nC,YAAa,MACbC,cAAc,QACdvgB,KAAK,0BACL3nB,UAAU,6BACVI,EAAE,6BANJ,sCAQA,wBACET,KAAK,UACLgoB,KAAK,0BACLvnB,EAAE,wCAHJ,2CChDG,eAA4B,EAAzBhE,SAAyB,4BAAC,IAClCnK,EAASiT,cAATjT,KADiC,EAEP0L,oBAAS,GAFF,mBAElCwqC,EAFkC,KAEvBC,EAFuB,KAInCC,EAAgB,WACpBp2C,EAAKq2C,eAAe,OAEhBC,EAAgB,WACpBt2C,EAAKq2C,eAAe,OAGtBhqC,qBAAU,WAOR,OALEo/B,SAAS1U,KAAKnnB,MAAM2mC,SADlBL,EAC6B,SAEA,GAG1B,WACLzK,SAAS1U,KAAKnnB,MAAM2mC,SAAW,MAEhC,CAACL,IA2BJ,OACE,kBAAC,GAAD,CAAax9B,QAAS,kBAAMy9B,GAAcD,IAA1C,yDACqB,OAAlBl2C,EAAKkF,UAAqB,kBAACsxC,GAAD,CAAc3pC,OAAQ,GAAID,MAAO,GAAjC,2DACR,OAAlB5M,EAAKkF,UAAqB,kBAACuxC,GAAD,CAAQ5pC,OAAQ,GAAID,MAAO,GAA3B,qDAC3B,kBAAC8pC,GAAD,CAAmBC,OAAQT,EAA3B,gEACA,kBAACU,GAAD,CAAQV,UAAWA,EAAnB,oDACE,kBAACW,GAAD,CAAeF,OAAQT,EAAvB,2DA9BkB,OAAlBl2C,EAAKkF,SAEL,oCACE,kBAAC4xC,GAAD,CAAcp+B,QAAS09B,EAAvB,0DACE,kBAACI,GAAD,CAAc3pC,OAAQ,GAAtB,4DAEF,kBAACiqC,GAAD,CAAcp+B,QAAS49B,EAAvB,0DACE,kBAACG,GAAD,CAAQ5pC,OAAQ,GAAhB,uDAMJ,oCACE,kBAACiqC,GAAD,CAAcp+B,QAAS49B,EAAvB,0DACE,kBAACG,GAAD,CAAQ5pC,OAAQ,GAAhB,sDAEF,kBAACiqC,GAAD,CAAcp+B,QAAS09B,EAAvB,0DACE,kBAACI,GAAD,CAAc3pC,OAAQ,GAAtB,iEAkBC+pC,GAASnmC,UAAOgM,IAAV,yEAAGhM,CAAH,oHAMN,qBAAGylC,UAA6B,EAAI,KACjC,qBAAGA,UAA6B,UAAY,YAO/CW,GAAgBpmC,UAAOgM,IAAV,gFAAGhM,CAAH,+KACd,qBAAGkmC,OAAuB,OAAS,UAUzB,cAAG/oB,MAAH,SAAU+oB,OACnB,qBAAuB,iBACpB,qBAAGA,OACN,mCAAqC,UAKrCG,GAAermC,UAAOgM,IAAV,+EAAGhM,CAAH,wLAiBL,qBAAGmd,MAAkBmpB,iBAM5BL,GAAoBjmC,UAAOgM,IAAV,oFAAGhM,CAAH,0JASjB,qBAAGkmC,OAAuB,EAAI,KAC3B,qBAAGA,OAAuB,UAAY,YAKhD7E,GAAcrhC,UAAOgM,IAAV,8EAAGhM,CAAH,sICxIF,iBAAGtG,SAAH,IAAgBxB,EAAhB,mCACb,kBAAC,GAAD,iBAAaA,EAAb,CAAoBquC,SAAUruC,EAAM4qB,KAApC,qDACE,kBAAC0jB,GAAD,CAAcD,SAAUruC,EAAM4qB,KAA9B,yDACE,kBAAC2jB,GAAD,CAAgBF,SAAUruC,EAAM4qB,KAAhC,+DAKAnjB,GAAUK,UAAOgM,IAAV,yEAAGhM,CAAH,iWAsBPwmC,GAAexmC,UAAOgM,IAAV,8EAAGhM,CAAH,sEAOZymC,GAAiBzmC,UAAOgM,IAAV,gFAAGhM,CAAH,2bA4BhB,SAAA9H,GAAK,OACLA,EAAMquC,UACNh2C,cADA,wYA4BA,I,oRC5FW,mBAA4B,EAAzBmJ,SAA0B,IAAbxB,EAAY,4BACjCuP,EAA6BvP,EAA7BuP,KAAMrG,EAAuBlJ,EAAvBkJ,KAAMhI,EAAiBlB,EAAjBkB,KAAM2O,EAAW7P,EAAX6P,OAClBxF,EAAMC,cAAND,EACFmkC,EAAOj/B,EAEb,OACE,kBAAC,GAAD,CAASiH,GAAItV,EAAM2O,OAAQA,EAA3B,kDACE,kBAAC,GAAD,uDACE,kBAAC2+B,EAAD,CAAMtqC,OAAQ,GAAID,MAAO,GAAIc,KAAK,qBAAlC,iDAEF,kBAAC,GAAD,iDAAQsF,EAAEnB,MAKVzB,GAAUK,kBAAO2Z,KAAV,0EAAG3Z,CAAH,0SAiBT,qBAAGmd,MAAkBxsB,aAApB,MAKC,SAAAuH,GAAK,OACLA,EAAM6P,QACNxX,cADA,0EAOF,SAAA2H,GAAK,OACLA,EAAM6P,QACNxX,cADA,uEAOEmtB,GAAQ1d,UAAOsF,KAAV,wEAAGtF,CAAH,2GAWLqhC,GAAcrhC,UAAOgM,IAAV,8EAAGhM,CAAH,0CAIb,qBAAGmd,MAAkBxsB,aAApB,SC3DUoM,ICPF4pC,GAAW,CACtB,CACEvlC,KAAM,oBACNqG,KCRJ,SAAuBvP,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,uCACE,8DACE,wBACEwF,EAAE,qNACFK,GAAG,YAFL,wCAKF,uBAAKd,KAAM/E,EAAM+E,MAAQ,OAAQwB,SAAS,UAAUG,UAAU,aAA9D,wCDAFxF,KAAM,IACNrH,IAAK,YAEP,CACEqP,KAAM,iBACNqG,KEdJ,SAAuBvP,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,yCACE,qBAAG+E,KAAM/E,EAAM+E,KAAMwB,SAAS,UAA9B,qCACE,wBAAMf,EAAE,kPAAR,yCACA,0DACE,wBAAMA,EAAE,mRAAR,yCACA,wBAAMA,EAAE,kIAAR,6CFQNtE,KAAM,UACNrH,IAAK,SAEP,CACEqP,KAAM,iBACNqG,KDpBJ,SAAuBvP,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,yCACE,qBAAGuG,SAAS,UAAUxB,KAAM/E,EAAM+E,MAAQ,OAA1C,qCACE,wBAAMS,EAAE,yUAAR,yCACA,wBAAMA,EAAE,gSAAR,yCACA,wBAAMA,EAAE,gIAAR,4CCeJtE,KAAM,UACNrH,IAAK,SAEP,CACEqP,KAAM,kBACNqG,KG1BJ,SAAuBvP,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,0CACE,qBAAGuG,SAAS,UAAUxB,KAAM/E,EAAM+E,MAAQ,OAA1C,sCACE,wBAAMS,EAAE,yLAAR,0CACA,wBAAMA,EAAE,sIAAR,0CACA,wBAAMA,EAAE,yIAAR,6CHqBJtE,KAAM,WACNrH,IAAK,UAQP,CACEqP,KAAM,mBACNqG,KItCJ,SAAuBvP,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,2CACE,qBAAGuG,SAAS,UAAUxB,KAAM/E,EAAM+E,MAAQ,OAA1C,uCACE,wBAAMS,EAAE,iWAAR,2CACA,wBAAMA,EAAE,mnBAAR,8CJkCJtE,KAAM,YACNrH,IAAK,YK5BMgL,OAZf,SAAuB7E,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,yCACE,wBACEwF,EAAE,uvMACFT,KAAK,OACLwB,SAAS,UAHX,2CCQS1B,OAXf,SAAuB7E,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,wCACE,wBACE+E,KAAM/E,EAAM+E,MAAQ,OACpBS,EAAE,idAFJ,0CCKSX,OARf,SAAuB7E,GACrB,OACE,qCAAK8E,QAAQ,aAAgB9E,EAA7B,0CACE,wBAAMwF,EAAE,gHAAR,4C,ylBCgBSd,UACb5C,aAAW,YAA4B,EAAzBN,SAA0B,IAAbxB,EAAY,8BAIjC6C,qBAAWC,IAJsB,IAEnCnB,MAAS3C,EAF0B,EAE1BA,WAAY0B,EAFc,EAEdA,KACVhB,EAHwB,EAGnCkC,QAAWlC,OAEL2K,EAAMC,cAAND,EAL6B,EAObtH,oBAAS,GAPI,mBAO9B6nB,EAP8B,KAOxBsC,EAPwB,KAS7Bn2B,EAAiCiJ,EAAjCjJ,SAAU0N,EAAuBzE,EAAvByE,mBAgBlB,OAJAf,qBAAU,WACRwpB,GAAQ,KACP,CAACn2B,IAGF,kBAAC,GAAD,8CACE,kBAAC23C,GAAD,CAAiBliC,WAAW,SAA5B,qDACE,kBAACmiC,GAAD,mDACE,kBAACC,GAAD,CAAOp4B,GAAG,IAAV,2CACE,kBAACq4B,GAAD,CAAW3qC,OAAQ,GAAnB,kDAGHO,EAAmBT,WAClB,kBAAC8qC,GAAD,gDACE,kBAACC,GAAD,sDAEC/vC,GAAsB,MAAR0B,GACb,kBAACsuC,GAAD,qDACE,kBAACC,GAAD,+CAAWvuC,EAAK4lB,UAChB,kBAAC4oB,GAAD,CAAUhrC,OAAQ,GAAlB,+CACA,kBAACirC,GAAD,yDACE,kBAACC,GAAD,kDACE,kBAAC,GAAD,CAAUr/B,QAASrQ,EAAnB,8CACE,kBAAC2vC,GAAD,gDAAYhlC,EAAE,WACd,kBAACilC,GAAD,CAAYprC,OAAQ,GAAIa,KAAK,qBAA7B,sDAQd,kBAACwqC,GAAD,uDACE,kBAACR,GAAD,CAAgBl1C,IAAI,yBAApB,qDACCmF,GAAsB,MAAR0B,GACb,oCACE,kBAAC8uC,GAAD,CACE5kB,KAAMA,EACN7a,QAAS,kBAAMmd,GAAQ,SAAAtC,GAAI,OAAKA,MAFlC,oDAIA,kBAAC6kB,GAAD,CAAYpB,SAAUzjB,EAAtB,gDACG6jB,GAAShpC,QACR,SAAA5E,GAAE,OAAKrF,GAAqBkX,SAAS7R,EAAGhH,QACxC+G,KAAI,SAAC8uC,EAAO7gC,GAAR,OACJ,kBAAC8gC,GAAD,iBACMD,EADN,CAEE7/B,QAzDD3O,EAyDkBwuC,EAAMxuC,KAjDvB,MAPFF,YAAUE,EAAK3G,QAAQ,MAAO,IAAK,CAC/C2G,KAC6D,MAA3DnK,EAASkK,SAASxF,MAAM,KAAKgK,QAAO,SAAA5E,GAAE,MAAW,KAAPA,KAAW,GACjD9J,EAASkK,SAASxF,MAAM,KAAKgK,QAAO,SAAA5E,GAAE,MAAW,KAAPA,KAAW,GACrD,GACN41B,OAAO,IAmDsC,EAAI,GACnC58B,IAAG,uBAAkBgV,GAHvB,mDAvDC,IAAA3N,KA6DH,kBAAC0uC,GAAD,+DACE,kBAAC,GAAD,qDACE,kBAACV,GAAD,CAAUhrC,OAAQ,GAAIa,KAAK,qBAA3B,+CACA,kBAACsqC,GAAD,gDAAY3uC,EAAK4lB,WAEnB,kBAAC,GAAD,CAAgBvW,QAASrQ,EAAzB,oDACE,kBAAC4vC,GAAD,CAAYprC,OAAQ,GAAIa,KAAK,qBAA7B,iDACA,kBAACsqC,GAAD,gDAAYhlC,EAAE,sBAa9BqkC,GAAkB5mC,kBAAOigB,IAAV,8EAAGjgB,CAAH,SACjB,qBAAGmd,MAAkBxsB,aAApB,SAOCgP,GAAUK,UAAOgM,IAAV,sEAAGhM,CAAH,8KAeP6mC,GAAe7mC,UAAOgM,IAAV,2EAAGhM,CAAH,oEAQZ8mC,GAAQ9mC,kBAAO2Z,KAAV,oEAAG3Z,CAAH,iGAQLmnC,GAAWnnC,UAAO0Z,EAAV,uEAAG1Z,CAAH,iFAORgnC,GAAYhnC,UAAOgM,IAAV,wEAAGhM,CAAH,sBAEX,qBAAGmd,MAAkBxsB,aAApB,SAQCkb,GAAW7L,UAAOgM,IAAV,uEAAGhM,CAAH,yUA0BRqnC,GAAqBrnC,UAAOgM,IAAV,iFAAGhM,CAAH,iGAUlBsnC,GAActnC,UAAOgM,IAAV,0EAAGhM,CAAH,0IASXknC,GAAiBlnC,UAAOgM,IAAV,6EAAGhM,CAAH,4HAORqnC,IAKNE,GAAYvnC,UAAO0Z,EAAV,yEAAG1Z,CAAH,iJAUX,qBAAGmd,MAAkBxsB,aAApB,SAMC82C,GAAmBznC,UAAOgM,IAAV,gFAAGhM,CAAH,kFAKlB,qBAAGmd,MAAkBxsB,aAApB,SAKCg3C,GAAa3nC,UAAOgM,IAAV,0EAAGhM,CAAH,2PAcZ,SAAA9H,GAAK,OACLA,EAAMquC,UACNh2C,cADA,wEAMA,qBAAG4sB,MAAkBxsB,aAApB,SAKCm3C,GAA2B9nC,UAAOgM,IAAV,wFAAGhM,CAAH,sBAGxBwK,GAAiBxK,UAAOgM,IAAV,8EAAGhM,CAAH,wT,wXC3QpB,IAAM+nC,GACE,QADFA,GAEI,OAoEKxiC,kBAAKyiC,oBAAUhuC,aAjEd,SAAC,GAA2B,EAAzBN,SAA0B,IAAbxB,EAAY,8BACd+C,oBAAS,GADK,mBACnCirC,EADmC,KAC3B+B,EAD2B,KAElCh5C,EAAaiJ,EAAbjJ,SACFs3C,EAAWvgC,uBACf,SAAA5M,GAAS,IAAD,QAMN,OAAgB,MALFF,YAAS,OAACE,QAAD,IAACA,OAAD,EAACA,EAAM3G,QAAQ,MAAO,IAAK,CAChD2G,KAAI,iBACFnK,QADE,IACFA,GADE,UACFA,EAAUkK,gBADR,iBACF,EAAoBxF,MAAM,YADxB,iBACF,EAAgCgK,QAAO,SAAA5E,GAAE,MAAW,KAAPA,YAD3C,aACF,EAA0D,UADxD,QAC8D,GAClE41B,OAAO,MAIX,QAAC1/B,QAAD,IAACA,OAAD,EAACA,EAAUkK,WAGLgD,EAAU+rC,aAAU,CAC1B/rC,MAAO+pC,EAAS6B,GAAgBA,KAD1B5rC,MAIFglB,EAAQyD,mBAAQ,kBAAM+hB,GAAShpC,QAAO,SAAA5E,GAAE,OAAKrF,GAAqBkX,SAAS7R,EAAGhH,QAAM+G,KACxF,SAAC8uC,EAAO7gC,GAAR,OACE,kBAAC8gC,GAAD,iBACMD,EADN,CAEE7/B,OAAQw+B,EAASqB,EAAMxuC,MAAQ,EAAI,EACnCrH,IAAG,uBAAkBgV,GAHvB,yDAMD,CAACw/B,IAEE4B,EAAcniC,uBAClB,kBAAMiiC,GAAU,KAChB,IAGIG,EAAcpiC,uBAClB,kBAAMiiC,GAAU,KAChB,IAGF,OACE,kBAACI,GAAD,CACEC,OAAQ,EACRnpC,MAAO,CAAEhD,SACTiY,aAAc+zB,EACd5zB,aAAc6zB,EAJhB,qDAMGjnB,EAUiB,aAAjB1tB,IACC,kBAAC,GAAD,CAAY8uC,KAAK,wBAAwBphC,OAAO,SAASonC,IAAI,WAA7D,iDACE,kBAACC,GAAD,CAAa9oB,IC7ER,6sTD6EL,0DASJ2oB,GAAiBroC,kBAAOyoC,KAASz8B,KAAnB,6EAAGhM,CAAH,sBAGhB,qBAAGmd,MAAkBxsB,aAApB,SAiBC63C,GAAcxoC,UAAO0gB,IAAV,0EAAG1gB,CAAH,yEAQXyO,GAAazO,UAAO/J,EAAV,yEAAG+J,CAAH,2EElHD,OAA0B,gDCM1B,iBAAGtG,SAAH,IAAgBxB,EAAhB,mCACb,kBAAC,GAAD,iBAAaA,EAAb,+CACE,kBAACwwC,GAAD,CAAWhpB,ICRA,yjQDQX,gDACA,kBAACgpB,GAAD,CAAWhpB,IAAKipB,GAAhB,kDAIEhpC,GAAUK,UAAOgM,IAAV,sEAAGhM,CAAH,iLAcP0oC,GAAY1oC,UAAO0gB,IAAV,wEAAG1gB,CAAH,+DEtBA,eAA4B,EAAzBtG,SAA0B,IAAbxB,EAAY,4BAE9BhB,EACP6D,qBAAWC,IADbnB,MAAS3C,WAEQ6C,EAA+C7B,EAA1D+3B,UAJiC,EAIyB/3B,EAApC0wC,kBAJW,MAIE,UAJF,EAIgBC,EAJhB,YAIyB3wC,EAJzB,4BAKzC,OACE,kBAAC,IAAD,eACEkP,OAAQ,SAAAlP,GAAK,OACXhB,EAAa,kBAAC6C,EAAD,iBAAe7B,EAAf,wDAA2B,kBAAC,IAAD,CAAUwW,GAAIk6B,EAAd,uDACtCC,EAHN,qD,iHCaJ,IAoEeC,iBAAI9uC,YAAWsrC,IApElB,SAAC,GAA2B,EAAzB5rC,SAA0B,IAAbxB,EAAY,4BAC9B3I,EAASiT,cAATjT,KAGG2H,EACPgB,EADF2B,MAAS3C,WAqBX,OAlBA0E,qBAAU,WACR,GAAY,MAARrM,GAAiC,MAAjBA,EAAKkF,SACvB,OAAQlF,EAAKkF,UACX,IAAK,KACHD,GAAuB,SACvB,MACF,IAAK,KACHA,GAAuB,SACvB,MAEF,QACEA,GAAuB,YAK5B,CAACjF,EAAKkF,WAGP,kBAAC,gBAAD,CAAe0oB,MAAK,eAAOrsB,GAA3B,gDACE,kBAAC,IAAD,CAAuBqsB,MAAOpsB,EAA9B,wDACE,kBAAC,GAAD,kDACE,kBAAC,EAAD,gDACA,kBAACg4C,GAAD,wCACE,kBAACC,GAAD,2CACC9xC,GAAc,kBAAC,GAAD,4CACf,kBAAC+xC,GAAD,CAAc/xC,WAAYA,EAA1B,+CACE,kBAAC,IAAD,0CACG2B,GAAO8E,QACN,SAAA5E,GAAE,OAAKrF,GAAqBkX,SAAS7R,EAAGhH,QACxC+G,KAAI,SAAA8uC,GAAK,OACTA,EAAM5uC,QACJ,kBAACkwC,GAAD,CACEva,QAASiZ,EAAMjZ,MACf58B,IAAK61C,EAAM71C,IACXqH,KAAMwuC,EAAMxuC,KACZ62B,UAAW2X,EAAM3X,UAJnB,gDAOA,kBAAC,IAAD,CACEtB,QAASiZ,EAAMjZ,MACf58B,IAAK61C,EAAM71C,IACXqH,KAAMwuC,EAAMxuC,KACZ62B,UAAW2X,EAAM3X,UAJnB,4CAQJ,kBAAC,IAAD,CAAUvhB,GAAG,cAAb,8CAGHxX,IAAexD,GAAqBkX,SAAS,WAC5C,kBAACu+B,GAAD,4CAGJ,kBAAC,IAAD,CAAgBC,kBAAkB,EAAOC,iBAAe,EAAxD,0DASJN,GAAO/oC,UAAO3O,KAAV,4DAAG2O,CAAH,oDAMJipC,GAAejpC,UAAOgM,IAAV,oEAAGhM,CAAH,0GASd,qBAAGmd,MAAkBxsB,aAApB,MAEM,qBAAGuG,WAA+B,oBAAsB,UAClD,qBAAGA,WAA+B,OAAS,UCtG5DoyC,IAASliC,OACP,kBAAC,IAAD,+CACE,kBAAC,GAAD,8CACE,kBAAC,GAAD,oDACE,kBAAC,GAAD,yCAIN4zB,SAAS8C,eAAe,S7KiHpB,kBAAmByL,WACrBA,UAAUC,cAAcC,MAAMnyC,MAAK,SAAAoyC,GACjCA,EAAaC,kB","file":"static/js/main.d033e927.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import Portuguese from './portuguese.json'\nimport English from './english.json'\n\nexport const idiom = ['pt']\n\nexport default {\n en: English,\n pt: Portuguese\n}\n\nexport { default as i18n } from './i18n'\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\n\nimport Translations from './index'\n\n// Translations Support\ni18n.use(initReactI18next).init({\n resources: Translations,\n lng: 'pt',\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false\n }\n})\n\nexport default i18n\n","import { createGlobalStyle, css } from 'styled-components'\nimport { normalize } from 'styled-normalize'\nimport { createMuiTheme } from '@material-ui/core/styles'\n\nconst mediaQuery = (...query) => (literals, ...placeholders) => css`\n @media ${css`\n ${query}\n `} {\n ${css(literals, ...placeholders)}\n }\n`\n\nexport const Theme = {\n breakpoints: {\n tablet: {\n min: 768\n },\n smallDesktop: {\n min: 1220\n },\n desktop: {\n min: 1440\n },\n largeDesktop: {\n min: 1800\n }\n }\n}\n\nexport const media = {\n tablet: mediaQuery(`(min-width: ${Theme.breakpoints.tablet.min / 16}em)`),\n\n smallDesktop: mediaQuery(\n `(min-width: ${Theme.breakpoints.smallDesktop.min / 16}em)`\n ),\n desktop: mediaQuery(`(min-width: ${Theme.breakpoints.desktop.min / 16}em)`),\n largeDesktop: mediaQuery(\n `(min-width: ${Theme.breakpoints.largeDesktop.min / 16}em)`\n )\n}\n\nexport const materialTheme = createMuiTheme({\n typography: {\n fontFamily: 'var(--primary-font)'\n },\n palette: {\n primary: {\n // light: will be calculated from palette.primary.main,\n main: '#00A4CC',\n dark: '#006982'\n },\n secondary: {\n main: '#FFFFFF'\n }\n }\n})\n\nexport default createGlobalStyle`\n ${normalize};\n :root{\n --primary-font: 'PT Sans', 'Roboto', sans-serif;\n\n --primary-color: #00A4CC;\n --dark-primary-color: #0087A7;\n --darker-primary-color: #006982;\n --platinium-gray-color: #E3E3E3;\n --sonic-silver-color: #777;\n --dark-jungle-green-color: #222720;\n --white-color: #FFF;\n --black-color: #000;\n --breadcrumb-gray-color: #969696;\n --dark-gray-color: #686868;\n --light-gray-color: #CDCDCD;\n --error-page-text-color: #78797d;\n --material-error-color: #f44336;\n --overlay-background-color: #A1EDFF;\n --table-border-color: rgba(34,36,38,0.15);\n --input-border-color: rgba(34,36,38,0.87);\n --table-border: 1px solid var(--table-border-color);\n\n\n --default-blue-color: #0056CC;\n --success-color: #70b84c;\n --success-border-color: #2F8405;\n --warning-color: #FCBD16;\n --warning-border-color: #C17100;\n --error-color: #E63C2F;\n --error-border-color: #BA1508;\n --dark-error-border-color: #710D05;\n --dark-error-color: #ac0005;\n --unknown-color: #969696;\n --info-color: #00A4CC;\n\n --box-shadow-black-half-opacity: rgba(0, 0, 0, 0.05);\n --background-color: var(--white-color);\n --text-color: var(--dark-jungle-green-color);\n }\n\n\n html , #root, main{\n height: 100%;\n }\n \n html {\n box-sizing: border-box;\n font-size: 1em;\n overflow-x: hidden;\n }\n\n\n *, *:before, *:after {\n box-sizing: inherit;\n }\n\n body, h1, h2, h3, h4, h5, h6, p, ol, ul {\n margin: 0;\n padding: 0;\n font-weight: normal;\n }\n\n ol, ul {\n list-style: none;\n }\n\n img {\n max-width: 100%;\n height: auto;\n max-height: 100%;\n }\n\n a {\n color: inherit; \n text-decoration: inherit; \n }\n\n\n body {\n height: 100%;\n min-height: 100vh;\n position: relative;\n width: 100%;\n font-family: var(--primary-font);\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.004);\n -moz-osx-font-smoothing: grayscale;\n -ms-overflow-x: hidden;\n background-color: var(--background-color);\n color: var(--text-color);\n }\n\n .mapboxgl-map, .mapboxgl-canvas, .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan, .mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas{\n &:focus{\n outline: none;\n }\n }\n\n .mapboxgl-popup .mapboxgl-popup-content{\n padding: 0;\n }\n\n\n /*!\n * https://github.com/arqex/react-datetime\n */\n\n.rdt {\n position: relative;\n}\n.rdtPicker {\n display: none;\n position: absolute;\n min-width: 250px;\n padding: 4px;\n margin-top: 1px;\n z-index: 99999 !important;\n background: #fff;\n box-shadow: 0 1px 3px rgba(0,0,0,.1);\n border: 1px solid #f9f9f9;\n}\n.rdtOpen .rdtPicker {\n display: block;\n}\n.rdtStatic .rdtPicker {\n box-shadow: none;\n position: static;\n}\n\n.rdtPicker .rdtTimeToggle {\n text-align: center;\n}\n\n.rdtPicker table {\n width: 100%;\n margin: 0;\n}\n.rdtPicker td,\n.rdtPicker th {\n text-align: center;\n height: 28px;\n}\n.rdtPicker td {\n cursor: pointer;\n}\n.rdtPicker td.rdtDay:hover,\n.rdtPicker td.rdtHour:hover,\n.rdtPicker td.rdtMinute:hover,\n.rdtPicker td.rdtSecond:hover,\n.rdtPicker .rdtTimeToggle:hover {\n background: #eeeeee;\n cursor: pointer;\n}\n.rdtPicker td.rdtOld,\n.rdtPicker td.rdtNew {\n color: #999999;\n}\n.rdtPicker td.rdtToday {\n position: relative;\n}\n.rdtPicker td.rdtToday:before {\n content: '';\n display: inline-block;\n border-left: 7px solid transparent;\n border-bottom: 7px solid #428bca;\n border-top-color: rgba(0, 0, 0, 0.2);\n position: absolute;\n bottom: 4px;\n right: 4px;\n}\n.rdtPicker td.rdtActive,\n.rdtPicker td.rdtActive:hover {\n background-color: #428bca;\n color: #fff;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.rdtPicker td.rdtActive.rdtToday:before {\n border-bottom-color: #fff;\n}\n.rdtPicker td.rdtDisabled,\n.rdtPicker td.rdtDisabled:hover {\n background: none;\n color: #999999;\n cursor: not-allowed;\n}\n\n.rdtPicker td span.rdtOld {\n color: #999999;\n}\n.rdtPicker td span.rdtDisabled,\n.rdtPicker td span.rdtDisabled:hover {\n background: none;\n color: #999999;\n cursor: not-allowed;\n}\n.rdtPicker th {\n border-bottom: 1px solid #f9f9f9;\n}\n.rdtPicker .dow {\n width: 14.2857%;\n border-bottom: none;\n cursor: default;\n}\n.rdtPicker th.rdtSwitch {\n width: 100px;\n}\n.rdtPicker th.rdtNext,\n.rdtPicker th.rdtPrev {\n font-size: 21px;\n vertical-align: top;\n}\n\n.rdtPrev span,\n.rdtNext span {\n display: block;\n -webkit-touch-callout: none; /* iOS Safari */\n -webkit-user-select: none; /* Chrome/Safari/Opera */\n -khtml-user-select: none; /* Konqueror */\n -moz-user-select: none; /* Firefox */\n -ms-user-select: none; /* Internet Explorer/Edge */\n user-select: none;\n}\n\n.rdtPicker th.rdtDisabled,\n.rdtPicker th.rdtDisabled:hover {\n background: none;\n color: #999999;\n cursor: not-allowed;\n}\n.rdtPicker thead tr:first-of-type th {\n cursor: pointer;\n}\n.rdtPicker thead tr:first-of-type th:hover {\n background: #eeeeee;\n}\n\n.rdtPicker tfoot {\n border-top: 1px solid #f9f9f9;\n}\n\n.rdtPicker button {\n border: none;\n background: none;\n cursor: pointer;\n}\n.rdtPicker button:hover {\n background-color: #eee;\n}\n\n.rdtPicker thead button {\n width: 100%;\n height: 100%;\n}\n\ntd.rdtMonth,\ntd.rdtYear {\n height: 50px;\n width: 25%;\n cursor: pointer;\n}\ntd.rdtMonth:hover,\ntd.rdtYear:hover {\n background: #eee;\n}\n\n.rdtCounters {\n display: inline-block;\n}\n\n.rdtCounters > div {\n float: left;\n}\n\n.rdtCounter {\n height: 100px;\n}\n\n.rdtCounter {\n width: 40px;\n}\n\n.rdtCounterSeparator {\n line-height: 100px;\n}\n\n.rdtCounter .rdtBtn {\n height: 40%;\n line-height: 40px;\n cursor: pointer;\n display: block;\n\n -webkit-touch-callout: none; /* iOS Safari */\n -webkit-user-select: none; /* Chrome/Safari/Opera */\n -khtml-user-select: none; /* Konqueror */\n -moz-user-select: none; /* Firefox */\n -ms-user-select: none; /* Internet Explorer/Edge */\n user-select: none;\n}\n.rdtCounter .rdtBtn:hover {\n background: #eee;\n}\n.rdtCounter .rdtCount {\n height: 20%;\n font-size: 1.2em;\n}\n\n.rdtMilli {\n vertical-align: middle;\n padding-left: 8px;\n width: 48px;\n}\n\n.rdtMilli input {\n width: 100%;\n font-size: 1.2em;\n margin-top: 37px;\n}\n\n.rdtTime td {\n cursor: default;\n}\n\n${''}\n\n.success-toast {\n color: var(--dark-primary-color);\n min-height: 3.75rem;\n background: var(--white-color) !important;\n font-size: 0.875rem;\n font-weight: 600;\n line-height: 1.25em;\n }\n\n .error-toast {\n color: var(--dark-primary-color);\n min-height: 3.75rem;\n background: var(--white-color) !important;\n font-size: 0.875rem;\n font-weight: 600;\n line-height: 1.25em;\n }\n\n .info-toast {\n color: var(--dark-primary-color);\n min-height: 3.75rem;\n background: var(--white-color) !important;\n font-size: 0.875rem;\n font-weight: 600;\n line-height: 1.25em;\n }\n\n .Toastify__toast {\n flex-direction: row;\n font-family: var(--primary-font);\n padding: 0.75rem 1.625rem !important;\n max-width: 20rem;\n \n }\n\n .Toastify__toast-container {\n width: fit-content !important;\n padding: 1rem !important;\n }\n\n\n`\n","import axios from 'axios'\nimport { camelizeKeys, decamelizeKeys } from 'humps'\nimport { AUTH_TOKEN_TYPE } from 'config'\n\nlet languageInterceptor, authorizationInterceptor\n\nconst decamelizeKeysTransformer = function (data) {\n return data && JSON.stringify(decamelizeKeys(data))\n}\n\nexport const setLanguageInterceptor = language => {\n axios.interceptors.request.eject(languageInterceptor)\n languageInterceptor = axios.interceptors.request.use(\n config => {\n if (language) {\n config.headers['Accept-Language'] = `${language};q=0.8`\n }\n return config\n },\n error => {\n return Promise.reject(error)\n }\n )\n}\n\nexport const setAuthorizationInterceptor = authToken => {\n axios.interceptors.request.eject(authorizationInterceptor)\n authorizationInterceptor = axios.interceptors.request.use(\n config => {\n const token = window.localStorage.getItem('access_token')\n if (token) {\n config.headers.Authorization = `${AUTH_TOKEN_TYPE} ${token}`\n }\n return config\n },\n error => {\n return Promise.reject(error)\n }\n )\n}\n\nfunction timeout (ms) {\n return new Promise(resolve => setTimeout(resolve, ms))\n}\n\nexport const setResponseInterceptor = (\n history,\n checkUserAuthentication,\n serverError\n) => {\n axios.interceptors.response.use(\n response => {\n return response\n },\n async error => {\n if (\n error != null &&\n error.response != null &&\n error.response.status === 401 &&\n history.location.match !== '/login/'\n ) {\n await checkUserAuthentication(error.config)\n await timeout(1000)\n const token = window.localStorage.getItem('access_token')\n if (token != null) {\n delete error.config.headers\n error.config.headers = {\n Authorization: `${AUTH_TOKEN_TYPE} ${token}`\n }\n error.config.baseURL = undefined\n\n return axios.request(error.config)\n }\n } else if (\n error == null ||\n error.response == null ||\n error.response.status === 500\n ) {\n serverError()\n }\n return Promise.reject(error)\n }\n )\n}\n\n// Converts all responses for CamelCase\naxios.interceptors.response.use(\n response => {\n response.data = camelizeKeys(response.data)\n return response\n },\n error => {\n return Promise.reject(camelizeKeys(error))\n }\n)\n\n// Converts all requests to under-cased\naxios.interceptors.request.use(\n config => {\n const currentContentType = config.headers['Content-Type']\n\n // Converts URL get params to underscored\n if (config.params) {\n config.params = decamelizeKeys(config.params)\n }\n\n if (!currentContentType) {\n config.headers['Content-Type'] = 'application/json'\n config.transformRequest = [decamelizeKeysTransformer]\n }\n return config\n },\n function (error) {\n return Promise.reject(error)\n }\n)\n\nexport default axios\n","class ValidationError extends Error {\n constructor (message) {\n super(message)\n this.response = 'ValidationError'\n this.message = message\n }\n}\n\nexport default ValidationError\n","/**\n * -----------------------------------------------------------------------------\n * Copyright (C) Ubiwhere, LDA\n * 2012-2018\n *\n *\n * The reproduction, transmission or use of this document or its contents is not\n * permitted without express written authorization. All rights, including rights\n * created by patent grant or registration of a utility model or design, are\n * reserved. Modifications made to this document are restricted to authorized\n * personnel only. Technical specifications and features are binding only when\n * specifically and expressly agreed upon in a written contract.\n * -----------------------------------------------------------------------------\n *\n * Config.js\n * Where we we set all the configurations and constants to be used in the application\n */\n\nimport 'interceptors'\n\nconst getEnv = (key, defaultValue) => {\n const hasWindowEnvKey = Object.prototype.hasOwnProperty.call(window._env_ ?? {}, key)\n if (hasWindowEnvKey) return window._env_[key]\n return process.env[key] ?? defaultValue\n}\n\nexport const VERSION =\n process.env.VERSION && process.env.VERSION.replace(/\"/g, '')\nexport const BUILD_DATE = process.env.BUILD_DATE\nexport const AUTH_TOKEN_TYPE = 'JWT'\nexport const DATETIME_FORMAT = 'YYYY-MM-DD HH:mm'\nexport const API_DATE_FORMAT = 'YYYY-MM-DD'\nexport const DATE_FORMAT = 'DD-MM-YYYY'\nexport const AUTOMATIC_EDIT_PERMISSIONS = {\n gateway: ['geometry', 'name'],\n sensor: ['geometry', 'name'],\n spot: ['geometry', 'spotType'],\n repeater: ['geometry', 'name'],\n panel: ['geometry', 'name'],\n area: [\n 'geometry',\n 'name',\n 'capacityMargin',\n 'capacity',\n 'description',\n 'address'\n ]\n}\n\nconst MAP_CENTER_LAT = getEnv('REACT_APP_MAP_START_LATITUDE')\nconst MAP_CENTER_LONG = getEnv('REACT_APP_MAP_START_LONGITUDE')\nexport const MAP_BOX_KEY = getEnv('REACT_APP_MAPBOX_ACCESS_TOKEN')\nexport const MAPCENTER = [MAP_CENTER_LONG, MAP_CENTER_LAT]\nexport const MAPZOOM = [14]\nexport const NOMINATIM_BASE_URL = 'https://nominatim.openstreetmap.org'\nexport const WS_JOIN_GROUP = 'parking_platform'\nexport const BASE_API_URL = getEnv('REACT_APP_BASE_API_URL')\nexport const BASE_MEDIA_URL = getEnv('REACT_APP_BASE_MEDIA_URL')\nexport const WS_BASE_URL = getEnv('REACT_APP_WS_URL')\nexport const SIDEBAR_LOGO = getEnv('REACT_APP_SIDEBAR_LOGO')\nexport const CRUD_PERMISSIONS_GROUP = 'FULL ADMINISTRATOR'\nexport const UNAVAILABLE_FEATURES = getEnv('REACT_APP_UNAVAILABLE_FEATURES').split(',')\nexport const MOBILE_DEEPLINK = getEnv('REACT_APP_MOBILE_DEEPLINK')\nexport const NOMINATIM_OPTIONS = {\n format: 'jsonv2',\n countrycodes: 'pt',\n viewbox: '-8.63834,41.59105,-7.98603,41.33996',\n bounded: 1\n}\nexport const AVAILABLE_SPOT_TYPES = getEnv('REACT_APP_AVAILABLE_SPOT_TYPES').split(',')\n","import axios from 'axios'\nimport ValidationError from 'utils/ValidationError'\n\nimport { setAuthorizationInterceptor } from 'interceptors'\nimport { BASE_API_URL } from 'config'\nconst PROFILE_URL = BASE_API_URL + '/profile/me/'\nconst REFRESHURL = BASE_API_URL + '/token/refresh/'\n\nconst logic = {\n _token (accessToken) {\n if (typeof accessToken !== 'undefined') {\n window.localStorage.setItem('access_token', accessToken)\n return\n }\n\n return window.localStorage.getItem('access_token')\n },\n\n retrieveUser () {\n return axios.get(PROFILE_URL)\n },\n\n isLoggedIn () {\n const res = !!this._token()\n return res\n },\n\n checkUserAuth (payload) {\n return Promise.resolve().then(() => {\n const refreshToken = window.localStorage.getItem('refresh_token')\n if (refreshToken) {\n const params = {\n refresh: refreshToken\n }\n return axios.post(REFRESHURL, params)\n } else {\n throw new ValidationError()\n }\n })\n },\n\n login (data) {\n const { access, refresh } = data\n if (access != null) {\n setAuthorizationInterceptor(access)\n window.localStorage.setItem('access_token', access)\n }\n if (refresh != null) {\n window.localStorage.setItem('refresh_token', refresh)\n }\n },\n\n logout () {\n window.localStorage.clear()\n }\n}\n\nexport default logic\n","import React, { Component } from 'react'\nimport logic from './authLogic'\nimport {\n setAuthorizationInterceptor,\n setResponseInterceptor,\n setLanguageInterceptor\n} from 'interceptors'\nimport { withRouter, matchPath } from 'react-router'\n\nimport Routes from 'routes'\n\nexport const Context = React.createContext()\n\nclass AuthProvider extends Component {\n constructor (props) {\n super(props)\n this.state = {\n isLoggedIn: logic.isLoggedIn(),\n user: null\n }\n }\n\n serverError = () => {\n this.props.history.push('/error/')\n }\n\n checkUserAuth = payload => {\n logic\n .checkUserAuth()\n .then(response => {\n if (response.data) {\n this.onLogin(response.data)\n if (payload != null && payload.config != null) {\n }\n }\n })\n .catch(err => {\n console.log({ err })\n this.onLogout()\n if (err == null || err.response == null) {\n this.serverError()\n }\n })\n }\n\n componentDidMount () {\n setLanguageInterceptor('pt-PT')\n const match = matchPath(this.props.location.pathname, '/login/')\n if (logic.isLoggedIn()) {\n const token = window.localStorage.getItem('access_token')\n setAuthorizationInterceptor('access_token', token)\n this.retrieveUser()\n setResponseInterceptor(\n this.props.history,\n this.checkUserAuth,\n this.serverError\n )\n if (match != null && match.isExact === true) {\n this.props.history.push('/')\n }\n } else {\n this.checkUserAuth()\n }\n }\n\n componentDidUpdate (prevProps, prevState) {\n const match = matchPath(this.props.location.pathname, '/login/')\n const prevMatch = matchPath(prevProps.location.pathname, '/login/')\n\n if (\n prevState.isLoggedIn !== this.state.isLoggedIn &&\n this.state.isLoggedIn &&\n prevMatch != null &&\n prevMatch.isExact === true\n ) {\n this.retrieveUser()\n setResponseInterceptor(\n this.props.history,\n this.checkUserAuth,\n this.serverError\n )\n this.props.history.push('/')\n }\n\n if (\n prevState.isLoggedIn !== this.state.isLoggedIn &&\n !this.state.isLoggedIn &&\n match == null\n ) {\n this.onLogout()\n }\n }\n\n get actions () {\n return {\n login: this.onLogin,\n logout: this.onLogout,\n retrieveUser: this.retrieveUser,\n serverError: this.serverError\n }\n }\n\n onLogin = data => {\n logic.login(data)\n this.setState({ isLoggedIn: true })\n }\n\n onLogout = e => {\n this.setState({ user: null, isLoggedIn: false })\n logic.logout()\n const privateRoutes =\n Routes != null ? Routes.map(el => el.private === true) : []\n const redirect = privateRoutes.some(el =>\n matchPath(this.props.location.pathname, el.path)\n )\n if (redirect) {\n this.props.history.push('/login/')\n }\n }\n\n retrieveUser = () => {\n logic\n .retrieveUser()\n .then(response => {\n this.setState({ user: response.data })\n })\n .catch(err => {\n console.log({ err })\n this.onLogout()\n if (err == null || err.response == null) {\n this.serverError()\n }\n })\n }\n\n render () {\n const { children } = this.props\n return (\n \n {children}\n \n )\n }\n}\n\nexport default withRouter(AuthProvider)\n","import { WS_BASE_URL, WS_JOIN_GROUP } from 'config'\n\nconst logic = {\n createWebSocketConnection ({ setSocket }) {\n return new Promise((resolve, reject) => {\n const actualToken = window.localStorage.getItem('access_token')\n if (actualToken != null) {\n const socket = new window.WebSocket(\n `${WS_BASE_URL}?token=${actualToken}`\n )\n\n socket.onopen = function () {\n socket.send(\n JSON.stringify({ command: 'join', group: WS_JOIN_GROUP })\n )\n console.info(\n `%c🔌 WebSocket: joined #${WS_JOIN_GROUP}`,\n 'color:green'\n )\n resolve(socket)\n }\n\n socket.onerror = function (evt) {\n reject(new Error(evt))\n }\n socket.onclose = () => {\n setSocket(null)\n }\n } else {\n reject(new Error('403'))\n }\n })\n }\n}\n\nexport default logic\n","import React, {\n createContext,\n useEffect,\n useContext,\n useRef,\n useState\n} from 'react'\nimport logic from './socketLogic'\nimport { camelizeKeys } from 'humps'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\n\nexport const Context = createContext()\n\nconst SocketProvider = ({ children, ...props }) => {\n const { store } = useContext(AuthContext)\n const [message, setMessage] = useState()\n\n const socket = useRef(null)\n const timeout = useRef(5000)\n const waiting = useRef(null)\n\n const setSocket = newSocket => {\n socket.current = newSocket\n }\n\n const connectToWSS = () => {\n if (socket.current == null && waiting.current == null && store.isLoggedIn) {\n logic\n .createWebSocketConnection({ setSocket })\n .then(ws => {\n setSocket(ws)\n\n ws.onmessage = e => {\n const obj = camelizeKeys(JSON.parse(e.data))\n // setMessage(prev => [...prev, obj] );\n setMessage(obj)\n }\n\n timeout.current = 5000\n })\n .catch(err => {\n setSocket(null)\n console.log('WSS ERROR: ', { err })\n console.info(\n `%c🔌 Trying to connect. Timout at ${timeout.current}.`,\n 'color:red'\n )\n waiting.current = setTimeout(() => {\n waiting.current = null\n console.info('%c🔌 Reconnecting...', 'color:red')\n connectToWSS()\n timeout.current = timeout.current + 5000\n }, timeout.current)\n })\n }\n }\n\n useEffect(() => {\n if (store.isLoggedIn) {\n connectToWSS()\n }\n // eslint-disable-next-line\n }, [store.isLoggedIn])\n\n return (\n \n {children}\n \n )\n}\n\nexport default SocketProvider\n","/**\n * ResponsiveHandler Component\n * Please write a description\n *\n * @author Your Name \n */\nimport React, { Component } from 'react'\nimport { Theme } from 'globalStyles'\n\nexport const Context = React.createContext('responsive')\n\nclass ResponsiveHandler extends Component {\n constructor (props) {\n super(props)\n this.state = {\n isMobile: window.innerWidth < Theme.breakpoints.smallDesktop.min,\n isDesktop: window.innerWidth >= Theme.breakpoints.smallDesktop.min,\n width: window.innerWidth,\n height: window.innerHeight\n }\n }\n\n recalculateDimensions = () => {\n const dimensions = {\n isMobile: window.innerWidth < Theme.breakpoints.smallDesktop.min,\n isDesktop: window.innerWidth >= Theme.breakpoints.smallDesktop.min,\n width: window.innerWidth,\n height: window.innerHeight\n }\n for (let i = 0; i < Object.keys(dimensions).length; i++) {\n if (\n dimensions[Object.keys(dimensions)[i]] !==\n this.state[Object.keys(dimensions)[i]]\n ) {\n this.setState({ ...dimensions })\n return\n }\n }\n }\n\n componentDidMount () {\n window.addEventListener('resize', this.recalculateDimensions)\n }\n\n componentWillUnmount () {\n window.removeEventListener('resize', this.recalculateDimensions)\n }\n\n render () {\n const { children } = this.props\n return (\n \n {children}\n \n )\n }\n}\n\nexport default ResponsiveHandler\n","import React from 'react'\nimport { Context } from 'providers/ResponsiveHandler/responsiveProvider'\n\nconst withResponsive = ComposedComponent => props => (\n \n {({ responsiveHandlers }) => (\n \n )}\n \n)\n\nexport default withResponsive\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n\n \n \n \n \n \n \n \n \n {props.text ?? ''}\n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport Accordion from '@material-ui/core/Accordion'\nimport AccordionSummary from '@material-ui/core/AccordionSummary'\nimport AccordionDetails from '@material-ui/core/AccordionDetails'\n\nexport default ({ children, ...props }) => (\n \n {props.summary}\n {props.details}\n \n)\n\nconst Wrapper = styled(Accordion)``\n\nconst Title = styled(AccordionSummary)`\n &.MuiAccordionSummary-root,\n &.MuiAccordionSummary-root.Mui-expanded {\n padding: 0;\n min-height: 100%;\n }\n\n & .MuiAccordionSummary-content,\n & .MuiAccordionSummary-content.Mui-expanded {\n margin: 0;\n }\n`\n\nconst Body = styled(AccordionDetails)`\n &.MuiAccordionDetails-root {\n padding: 0;\n }\n`\n","import React from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { IMaskInput } from 'react-imask'\n\nexport default React.forwardRef(({ children, ...props }, ref) => {\n return (\n {}}\n />\n )\n})\n\nconst StyledMaskedInput = styled(IMaskInput)`\n color: var(--breadcrumb-gray-color);\n font-size: 0.875rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1em;\n border-style: solid;\n border-width: 1px;\n border-color: var(--platinium-gray-color);\n border-radius: 0;\n margin: 0;\n width: 100%;\n outline: none;\n margin: 0;\n padding: 8.75px 14px 8.75px;\n font-family: var(--primary-font);\n\n &::placeholder {\n color: var(--platinium-gray-color);\n font-size: 0.875rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1rem;\n text-transform: uppercase;\n }\n\n &:hover {\n border-color: rgba(0, 0, 0, 0.87);\n }\n\n &:focus,\n &:active {\n outline: 2px solid var(--primary-color);\n border: none;\n }\n\n &:disabled {\n background: transparent;\n &:hover,\n &:focus,\n &:active {\n border-color: var(--platinium-gray-color);\n border-style: solid;\n border-width: 1px;\n outline: none;\n }\n\n ${props =>\n props.isEditing &&\n css`\n color: var(--platinium-gray-color);\n cursor: not-allowed;\n `}\n }\n ${props =>\n props.error === 'true' &&\n css`\n border-color: var(--material-error-color);\n `}\n`\n","import React from 'react'\nimport NumberFormat from 'react-number-format'\n\nexport default ({ children, ...props }) => {\n const { inputRef, onChange, error, ...other } = props\n\n return (\n {\n onChange({\n target: {\n name: props.name,\n value: values.floatValue != null ? values.floatValue : null\n }\n })\n }}\n />\n )\n}\n","import React from 'react'\nimport styled, { css } from 'styled-components'\n\nimport TextField from '@material-ui/core/TextField'\nimport MaskedInput from 'components/MaskedInput'\nimport NumberInput from 'components/NumberInput'\n\nexport default ({ children, ...props }) => {\n const {\n masked,\n InputLabelProps,\n fullWidth,\n number,\n helperText,\n isEditing,\n ...other\n } = props\n if (masked) {\n return \n } else if (number) {\n return (\n {\n const { floatValue } = values\n if (floatValue != null && floatValue !== '') {\n if (props.min != null && props.max != null) {\n return floatValue >= props.min && floatValue <= props.max\n } else if (props.max != null) {\n return floatValue <= props.max\n } else if (props.min != null) {\n return floatValue >= props.min\n } else {\n return true\n }\n }\n return true\n }\n }\n }}\n />\n )\n }\n return (\n \n )\n}\n\nconst Wrapper = styled(TextField)`\n & .MuiOutlinedInput-notchedOutline {\n border-color: var(--platinium-gray-color);\n border-radius: 0;\n }\n\n & .MuiFormLabel-root {\n color: var(--platinium-gray-color);\n font-size: 0.875rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1rem;\n text-transform: uppercase;\n\n ${'' /* width: 80%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; */}\n }\n & .MuiInputLabel-outlined.MuiInputLabel-shrink {\n text-transform: none;\n &:first-letter{\n text-transform: capitalize;\n }\n }\n\n & .MuiInputBase-input {\n color: var(--breadcrumb-gray-color);\n font-size: 0.875rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1em;\n }\n\n & .MuiInputBase-root {\n background-color: white;\n }\n\n & .MuiOutlinedInput-root.Mui-disabled .MuiOutlinedInput-notchedOutline {\n border-color: var(--platinium-gray-color);\n }\n\n & .MuiFormHelperText-contained {\n margin: 0;\n }\n\n\n ${props =>\n props.isEditing &&\n css`\n & .MuiInputBase-input.Mui-disabled {\n color: var(--platinium-gray-color);\n cursor: not-allowed;\n }\n `}\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport Autocomplete from '@material-ui/lab/Autocomplete'\nimport StyledInput from 'components/StyledInput'\nimport { useTranslation } from 'react-i18next'\n\nimport LocationOnIcon from '@material-ui/icons/LocationOn'\nimport Grid from '@material-ui/core/Grid'\nimport Typography from '@material-ui/core/Typography'\n\nexport default ({ children, ...props }) => {\n const { t } = useTranslation()\n return (\n {\n props.onChange(newInputValue)\n }}\n loading={props.loading}\n clearText={t('clear')}\n renderInput={params => (\n \n )}\n fullWidth\n renderOption={\n props.mapOptions\n ? option => {\n const fallbackDisplay = option.displayName.split(',')\n let display = []\n\n let label = []\n if (option.address != null) {\n display = [\n option.address.road ? option.address.road : null,\n option.address.street ? option.address.street : null,\n option.address.village ? option.address.village : null,\n option.address.locality ? option.address.locality : null\n ].filter(el => el != null)\n label = [\n option.address.city ? option.address.city : null,\n option.address.town ? option.address.town : null,\n option.address.municipality\n ? option.address.municipality\n : null,\n option.address.county ? option.address.county : null,\n option.address.state ? option.address.state : null,\n option.address.country ? option.address.country : null\n ].filter(el => el != null)\n }\n return (\n \n \n \n \n \n \n {display != null && display.length > 0\n ? display.join(', ')\n : fallbackDisplay[0]}\n \n\n \n {label != null && label.length > 0\n ? label.join(', ')\n : fallbackDisplay.slice(\n Math.max(fallbackDisplay.length - 2, 0)\n )}\n \n \n \n )\n }\n : null\n }\n />\n )\n}\n\nconst StyledAutoComplete = styled(Autocomplete)``\n\nconst StyledSpan = styled.span`\n \n`\n","import React, { useState, memo, useEffect, useCallback } from 'react'\nimport styled from 'styled-components'\nimport get from 'lodash.get'\nimport isEqual from 'lodash.isequal'\n\nimport Table from '@material-ui/core/Table'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableRow from '@material-ui/core/TableRow'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableSortLabel from '@material-ui/core/TableSortLabel'\nimport Tooltip from '@material-ui/core/Tooltip'\n\nimport { useTranslation } from 'react-i18next'\nimport { useLocation } from 'react-router-dom'\n\nconst StyledTable = ({ data, columns, defaultOrder = 'asc' }) => {\n const location = useLocation()\n const { t } = useTranslation()\n const [order, setOrder] = useState(location.pathname === '/' ? 'desc' : defaultOrder)\n const [orderBy, setOrderBy] = useState(null)\n\n useEffect(() => {\n if (columns != null && columns[0] != null) {\n setOrderBy(columns[0].key)\n }\n }, [columns])\n\n const descendingComparator = useCallback((a, b, orderBy) => {\n const first = get(a, orderBy)\n const second = get(b, orderBy)\n\n if (\n first != null &&\n second != null &&\n (typeof first === 'string' || first instanceof String) &&\n (typeof second === 'string' || second instanceof String)\n ) {\n return first.localeCompare(second, undefined, {\n numeric: true,\n sensitivity: 'base'\n })\n }\n\n if (second < first) {\n return -1\n }\n if (second > first) {\n return 1\n }\n return 0\n }, [])\n\n const getComparator = useCallback((order, orderBy) => {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy)\n // eslint-disable-next-line\n },[])\n\n const handleRequestSort = useCallback(property => {\n const isAsc = orderBy === property && order === 'asc'\n setOrder(isAsc ? 'desc' : 'asc')\n setOrderBy(property)\n }, [order, orderBy])\n\n const stableSort = useCallback((array, comparator) => {\n const stabilizedThis = array?.map((el, index) => [el, index])\n stabilizedThis.sort((a, b) => {\n const order = comparator(a[0], b[0])\n if (order !== 0) return order\n return a[1] - b[1]\n })\n return stabilizedThis?.map(el => el[0])\n }, [])\n\n const renderCell = useCallback((element, column) => {\n if (column.render != null) {\n return column.render({ ...element, t })\n }\n if (column.key != null) {\n return t(get(element, column.key, '-'))\n }\n return '-'\n // eslint-disable-next-line\n }, [])\n\n return (\n \n \n \n {columns != null &&\n columns.map((column, index) => (\n \n {column.icon ? (\n \n handleRequestSort(column.key)}\n >\n {column.icon || column.label}\n \n \n ) : (\n handleRequestSort(column.key)}\n >\n {column.icon || column.label}\n \n )}\n \n ))}\n \n \n \n {data != null &&\n stableSort(data, getComparator(order, orderBy)).map((el, index) => (\n \n {columns != null &&\n columns.map((column, columnIndex) => (\n \n {column != null && renderCell(el, column)}\n \n ))}\n \n ))}\n \n \n )\n}\n\nexport default memo(StyledTable, isEqual)\n\nconst StyledTableRow = styled(TableRow)`\n background-color: var(--white-color);\n &:nth-of-type(even) {\n background-color: rgba(0, 0, 50, 0.02);\n }\n`\n\nvar StyledTableCell = styled(TableCell)`\n &.MuiTableCell-root {\n border: none;\n color: var(--text-color);\n font-size: 0.875rem;\n letter-spacing: 0;\n line-height: 1.4285714286em;\n padding: 0.5rem;\n max-width: 20ch;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`\n\nconst StyledTableHead = styled(TableHead)`\n & ${StyledTableRow} {\n background-color: var(--primary-color);\n\n & ${StyledTableCell} {\n color: var(--white-color);\n font-size: 0.875rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1.4285714286em;\n }\n }\n`\n\nconst StyledTableBody = styled(TableBody)`\n &.MuiTableBody-root {\n border: var(--table-border);\n }\n`\n","import styled from 'styled-components'\nimport Pagination from '@material-ui/lab/Pagination'\n\nexport default styled(Pagination)`\n margin: 1rem 0 1rem auto;\n & .MuiPagination-ul {\n & li:last-child .MuiPaginationItem-root {\n border-right: 1px solid var(--platinium-gray-color);\n }\n }\n & .MuiPaginationItem-root {\n border-radius: 0;\n height: 1.75rem;\n width: 1.75rem;\n\n font-family: \"PT Sans\";\n font-size: 0.75rem;\n letter-spacing: 0;\n line-height: 1em;\n text-align: center;\n border: 1px solid var(--platinium-gray-color);\n border-right: none;\n background-color: var(--white-color);\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n }\n & .MuiPaginationItem-page.Mui-selected {\n background-color: var(--primary-color);\n color: var(--white-color);\n\n &:hover {\n background-color: var(--dark-primary-color);\n }\n }\n`\n","export const percentages = [\n {\n color: 'var(--dark-error-color)',\n borderColor: 'var(--dark-error-border-color)',\n text: 'maxed_out'\n },\n {\n color: 'var(--error-color)',\n borderColor: 'var(--error-border-color)',\n text: 'full'\n },\n {\n color: 'var(--warning-color)',\n borderColor: 'var(--warning-border-color)',\n text: 'high'\n },\n {\n color: 'var(--success-color)',\n borderColor: 'var(--success-border-color)',\n text: 'medium'\n },\n {\n color: 'var(--info-color)',\n borderColor: 'var(--default-blue-color)',\n text: 'low'\n }\n]\n\nexport const getBorderColorsByOccupancy = occupancy => {\n switch (occupancy) {\n case 'maxed_out':\n return '#710D05'\n case 'full':\n return '#BA1508'\n case 'high':\n return '#C17100'\n case 'medium':\n return '#2F8405'\n case 'low':\n return '#0056CC'\n default:\n return '#0056CC'\n }\n}\n\nexport const getColorsByOccupancy = occupancy => {\n switch (occupancy) {\n case 'maxed_out':\n return '#B32116'\n case 'full':\n return '#E63C2F'\n case 'high':\n return '#FCBD16'\n case 'medium':\n return '#70b84c'\n case 'low':\n return '#00A4CC'\n default:\n return '#00A4CC'\n }\n}\n\nexport const getColorsByStatus = (device, type) => {\n switch (type) {\n case 'spots':\n switch (device.occupied) {\n case true:\n return {\n bg: 'var(--error-color)',\n color: 'var(--white-color)'\n }\n case false:\n return {\n bg: 'var(--success-color)',\n color: 'var(--white-color)'\n }\n default:\n return {\n bg: 'var(--warning-color)',\n color: 'var(--white-color)'\n }\n }\n case 'assets':\n switch (device.status) {\n case 'ok':\n return {\n bg: 'var(--success-color)',\n color: 'var(--white-color)'\n }\n case 'not_ok':\n return {\n bg: 'var(--error-color)',\n color: 'var(--white-color)'\n }\n case 'unknown':\n return {\n bg: 'var(--warning-color)',\n color: 'var(--white-color)'\n }\n default:\n return {\n bg: 'var(--warning-color)',\n color: 'var(--white-color)'\n }\n }\n case 'areas':\n switch (device.verboseOccupation) {\n case 'maxed_out':\n return {\n bg: 'var(--dark-error-color)',\n color: 'var(--white-color)'\n }\n case 'full':\n return {\n bg: 'var(--error-color)',\n color: 'var(--white-color)'\n }\n case 'high':\n return {\n bg: 'var(--warning-color)',\n color: 'var(--white-color)'\n }\n case 'medium':\n return {\n bg: 'var(--success-color)',\n color: 'var(--white-color)'\n }\n case 'low':\n return {\n bg: 'var(--info-color)',\n color: 'var(--white-color)'\n }\n default:\n return {\n bg: 'var(--unknown-color)',\n color: 'var(--black-color)'\n }\n }\n default:\n return {\n bg: 'var(--primary-color)',\n color: 'var(--white-color)'\n }\n }\n}\n\nexport const getPolygonCenter = (vertexes) => {\n const lons = vertexes.map(vertex => vertex[0])\n const lats = vertexes.map(vertex => vertex[1])\n const centerLon = (Math.min(...lons) + Math.max(...lons)) / 2\n const centerLat = (Math.min(...lats) + Math.max(...lats)) / 2\n return [centerLon, centerLat]\n}\n","export const styles = [\n {\n id: 'gl-draw-polygon-fill-inactive.cold',\n type: 'fill',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'fill-color': '#00A4CC',\n 'fill-outline-color': '#00A4CC',\n 'fill-opacity': 0.1\n }\n\n },\n {\n id: 'gl-draw-polygon-fill-active.cold',\n type: 'fill',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'true'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ]\n ],\n paint: {\n 'fill-color': '#004454',\n 'fill-outline-color': '#004454',\n 'fill-opacity': 0.1\n }\n\n },\n {\n id: 'gl-draw-polygon-midpoint.cold',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '==',\n 'meta',\n 'midpoint'\n ]\n ],\n paint: {\n 'circle-radius': 3,\n 'circle-color': '#004454'\n }\n\n },\n {\n id: 'gl-draw-polygon-stroke-inactive.cold',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#00A4CC',\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-polygon-stroke-active.cold',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'true'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#004454',\n 'line-dasharray': [\n 0.2,\n 2\n ],\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-line-inactive.cold',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'LineString'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#00A4CC',\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-line-active.cold',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n '$type',\n 'LineString'\n ],\n [\n '==',\n 'active',\n 'true'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#004454',\n 'line-dasharray': [\n 0.2,\n 2\n ],\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-polygon-and-line-vertex-stroke-inactive.cold',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'meta',\n 'vertex'\n ],\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'circle-radius': 5,\n 'circle-color': '#fff'\n }\n\n },\n {\n id: 'gl-draw-polygon-and-line-vertex-inactive.cold',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'meta',\n 'vertex'\n ],\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'circle-radius': 3,\n 'circle-color': '#004454'\n }\n\n },\n {\n id: 'gl-draw-point-point-stroke-inactive.cold',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '==',\n 'meta',\n 'feature'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-opacity': 1,\n 'circle-color': '#fff'\n }\n\n },\n {\n id: 'gl-draw-point-inactive.cold',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '==',\n 'meta',\n 'feature'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-color': '#00A4CC'\n }\n\n },\n {\n id: 'gl-draw-point-stroke-active.cold',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '==',\n 'active',\n 'true'\n ],\n [\n '!=',\n 'meta',\n 'midpoint'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-color': '#fff'\n }\n\n },\n {\n id: 'gl-draw-point-active.cold',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '!=',\n 'meta',\n 'midpoint'\n ],\n [\n '==',\n 'active',\n 'true'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-color': '#004454'\n }\n\n },\n {\n id: 'gl-draw-polygon-fill-static.cold',\n type: 'fill',\n filter: [\n 'all',\n [\n '==',\n 'mode',\n 'static'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ]\n ],\n paint: {\n 'fill-color': '#404040',\n 'fill-outline-color': '#404040',\n 'fill-opacity': 0.1\n }\n\n },\n {\n id: 'gl-draw-polygon-stroke-static.cold',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'mode',\n 'static'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#404040',\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-line-static.cold',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'mode',\n 'static'\n ],\n [\n '==',\n '$type',\n 'LineString'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#404040',\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-point-static.cold',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'mode',\n 'static'\n ],\n [\n '==',\n '$type',\n 'Point'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-color': '#404040'\n }\n\n },\n {\n id: 'gl-draw-polygon-fill-inactive.hot',\n type: 'fill',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'fill-color': '#00A4CC',\n 'fill-outline-color': '#00A4CC',\n 'fill-opacity': 0.1\n }\n\n },\n {\n id: 'gl-draw-polygon-fill-active.hot',\n type: 'fill',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'true'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ]\n ],\n paint: {\n 'fill-color': '#004454',\n 'fill-outline-color': '#004454',\n 'fill-opacity': 0.1\n }\n\n },\n {\n id: 'gl-draw-polygon-midpoint.hot',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '==',\n 'meta',\n 'midpoint'\n ]\n ],\n paint: {\n 'circle-radius': 3,\n 'circle-color': '#004454'\n }\n\n },\n {\n id: 'gl-draw-polygon-stroke-inactive.hot',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#00A4CC',\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-polygon-stroke-active.hot',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'true'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#004454',\n 'line-dasharray': [\n 0.2,\n 2\n ],\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-line-inactive.hot',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'LineString'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#00A4CC',\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-line-active.hot',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n '$type',\n 'LineString'\n ],\n [\n '==',\n 'active',\n 'true'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#004454',\n 'line-dasharray': [\n 0.2,\n 2\n ],\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-polygon-and-line-vertex-stroke-inactive.hot',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'meta',\n 'vertex'\n ],\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'circle-radius': 5,\n 'circle-color': '#fff'\n }\n\n },\n {\n id: 'gl-draw-polygon-and-line-vertex-inactive.hot',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'meta',\n 'vertex'\n ],\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'circle-radius': 3,\n 'circle-color': '#004454'\n }\n\n },\n {\n id: 'gl-draw-point-point-stroke-inactive.hot',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '==',\n 'meta',\n 'feature'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-opacity': 1,\n 'circle-color': '#fff'\n }\n\n },\n {\n id: 'gl-draw-point-inactive.hot',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'active',\n 'false'\n ],\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '==',\n 'meta',\n 'feature'\n ],\n [\n '!=',\n 'mode',\n 'static'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-color': '#00A4CC'\n }\n\n },\n {\n id: 'gl-draw-point-stroke-active.hot',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '==',\n 'active',\n 'true'\n ],\n [\n '!=',\n 'meta',\n 'midpoint'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-color': '#fff'\n }\n\n },\n {\n id: 'gl-draw-point-active.hot',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n '$type',\n 'Point'\n ],\n [\n '!=',\n 'meta',\n 'midpoint'\n ],\n [\n '==',\n 'active',\n 'true'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-color': '#004454'\n }\n\n },\n {\n id: 'gl-draw-polygon-fill-static.hot',\n type: 'fill',\n filter: [\n 'all',\n [\n '==',\n 'mode',\n 'static'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ]\n ],\n paint: {\n 'fill-color': '#404040',\n 'fill-outline-color': '#404040',\n 'fill-opacity': 0.1\n }\n\n },\n {\n id: 'gl-draw-polygon-stroke-static.hot',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'mode',\n 'static'\n ],\n [\n '==',\n '$type',\n 'Polygon'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#404040',\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-line-static.hot',\n type: 'line',\n filter: [\n 'all',\n [\n '==',\n 'mode',\n 'static'\n ],\n [\n '==',\n '$type',\n 'LineString'\n ]\n ],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n paint: {\n 'line-color': '#404040',\n 'line-width': 2\n }\n\n },\n {\n id: 'gl-draw-point-static.hot',\n type: 'circle',\n filter: [\n 'all',\n [\n '==',\n 'mode',\n 'static'\n ],\n [\n '==',\n '$type',\n 'Point'\n ]\n ],\n paint: {\n 'circle-radius': 8,\n 'circle-color': '#404040'\n }\n\n }\n]\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n )\n}\n\nexport default SvgComponent\n","import React from 'react'\nimport styled, { css } from 'styled-components'\n\nimport InfoIcon from 'icons/InfoIcon'\n\nimport InputLabel from '@material-ui/core/InputLabel'\nimport FormControl from '@material-ui/core/FormControl'\nimport Select from '@material-ui/core/Select'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport FormHelperText from '@material-ui/core/FormHelperText'\nimport Tooltip from '@material-ui/core/Tooltip'\n\nexport default ({ children, ...props }) => {\n const {\n id,\n label,\n helperText,\n newButton,\n isEditing,\n disabledOptions,\n tooltip,\n ...remain\n } = props\n\n const generateOptions = () => {\n const mappedOptions = []\n if (newButton != null) {\n mappedOptions.push(\n // \n newButton\n // \n )\n }\n if (props.multiple) {\n return [\n ...mappedOptions,\n ...props.options.map((option, index) => (\n \n -1}\n />\n \n {disabledOptions != null &&\n Array.isArray(disabledOptions) &&\n disabledOptions.includes(option.value) && (\n /*eslint-disable */\n \n {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n \n \n \n /* eslint-enable */\n )}\n \n ))\n ]\n } else {\n return [\n ...mappedOptions,\n ...props.options.map((option, index) => (\n \n {option.label ?? '-'}\n \n ))\n ]\n }\n }\n\n return (\n \n {label != null && label !== '' && (\n {label}\n )}\n {\n if (props.multiple) {\n return selected\n .map(el => {\n if (el != null) {\n const found = props.options.find(obj => obj.value === el)\n\n return found != null ? found.label : el\n }\n return null\n })\n .filter(el => el != null)\n .join(', ')\n } else {\n const found = props.options.find(obj => obj.value === selected)\n return found != null ? found.label : selected\n }\n }}\n {...remain}\n >\n {props.options != null && generateOptions()}\n \n {helperText && {helperText}}\n \n )\n}\n\nconst Wrapper = styled(FormControl)`\n &.MuiFormControl-root {\n width: 100%;\n }\n`\n\nconst StyledSelect = styled(Select)`\n & .MuiOutlinedInput-notchedOutline {\n border-color: var(--platinium-gray-color);\n border-radius: 0;\n\n ${props =>\n (props.label == null || props.label === '') &&\n css`\n legend {\n width: 0;\n }\n `}\n }\n\n & .MuiSelect-icon {\n color: var(--platinium-gray-color);\n }\n &.MuiOutlinedInput-root.Mui-focused .MuiSelect-icon {\n color: var(--primary-color);\n }\n\n & .MuiSelect-select:focus {\n background-color: var(--white-color);\n }\n\n & .MuiInputBase-input {\n color: var(--breadcrumb-gray-color);\n font-size: 0.875rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1em;\n }\n\n &.MuiOutlinedInput-root.Mui-disabled .MuiOutlinedInput-notchedOutline {\n border-color: var(--platinium-gray-color);\n\n legend {\n width: 0;\n }\n }\n\n ${props =>\n props.isediting &&\n css`\n & .MuiInputBase-input.Mui-disabled {\n color: var(--platinium-gray-color);\n cursor: not-allowed;\n }\n `}\n`\n\nconst StyledMenuItem = styled(MenuItem)`\n position: relative;\n`\n\nconst StyledLabel = styled(InputLabel)`\n &.MuiFormLabel-root {\n color: var(--platinium-gray-color);\n font-size: 0.875rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1rem;\n text-transform: uppercase;\n }\n &.MuiInputLabel-outlined.MuiInputLabel-shrink {\n text-transform: capitalize;\n }\n`\n\nconst StyledFormHelperText = styled(FormHelperText)`\n &.MuiFormHelperText-contained {\n margin: 0;\n color: var(--error-color);\n }\n`\n\nconst InfoIconWrapper = styled.div`\n position: absolute;\n right: 1.5rem;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: auto 0;\n`\n\nconst StyledToolTip = styled(Tooltip)`\n pointer-events: auto;\n`\n","import React, { Component } from 'react'\nimport styled, { css } from 'styled-components'\nimport ReactMapboxGl, {\n ZoomControl,\n Layer,\n Feature,\n Popup,\n Marker,\n Cluster\n} from 'react-mapbox-gl'\nimport mapboxgl from 'mapbox-gl'\nimport DrawControl from 'react-mapbox-gl-draw'\nimport '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css'\nimport moment from 'moment'\nimport isEqual from 'lodash.isequal'\n\nimport { Link } from 'react-router-dom'\n\nimport { withTranslation } from 'react-i18next'\n\nimport { MAP_BOX_KEY, MAPCENTER, MAPZOOM, DATETIME_FORMAT } from 'config'\nimport centroid from '@turf/centroid'\n\nimport GatewayGreenIcon from 'icons/GatewayGreenIcon'\nimport GatewayGrayIcon from 'icons/GatewayGrayIcon'\nimport GatewayRedIcon from 'icons/GatewayRedIcon'\nimport GatewayYellowIcon from 'icons/GatewayYellowIcon'\n\nimport RepeaterYellowIcon from 'icons/RepeaterYellowIcon'\nimport RepeaterGreenIcon from 'icons/RepeaterGreenIcon'\nimport RepeaterRedIcon from 'icons/RepeaterRedIcon'\nimport RepeaterGrayIcon from 'icons/RepeaterGrayIcon'\n\nimport CarSensorYellowIcon from 'icons/CarSensorYellowIcon'\nimport CarSensorGreenIcon from 'icons/CarSensorGreenIcon'\nimport CarSensorRedIcon from 'icons/CarSensorRedIcon'\nimport CarSensorGrayIcon from 'icons/CarSensorGrayIcon'\n\nimport GateSensorYellowIcon from 'icons/GateSensorYellowIcon'\nimport GateSensorGreenIcon from 'icons/GateSensorGreenIcon'\nimport GateSensorRedIcon from 'icons/GateSensorRedIcon'\nimport GateSensorGrayIcon from 'icons/GateSensorGrayIcon'\n\nimport PanelYellowIcon from 'icons/PanelYellowIcon'\nimport PanelGreenIcon from 'icons/PanelGreenIcon'\nimport PanelRedIcon from 'icons/PanelRedIcon'\nimport PanelGrayIcon from 'icons/PanelGrayIcon'\n\nimport ClusterIcon from 'icons/ClusterIcon'\n\n// import SpotRedIcon from 'icons/SpotRedIcon'\n// import SpotGreenIcon from 'icons/SpotGreenIcon'\n// import SpotGrayIcon from 'icons/SpotGrayIcon'\n\nimport SpotInsideRedIcon from 'icons/SpotInsideRedIcon'\nimport SpotInsideGreenIcon from 'icons/SpotInsideGreenIcon'\nimport SpotInsideGrayIcon from 'icons/SpotInsideGrayIcon'\nimport SpotInsideYellowIcon from 'icons/SpotInsideYellowIcon'\n\nimport VideoSensorYellowIcon from 'icons/VideoSensorYellowIcon'\nimport VideoSensorGreenIcon from 'icons/VideoSensorGreenIcon'\nimport VideoSensorRedIcon from 'icons/VideoSensorRedIcon'\nimport VideoSensorGrayIcon from 'icons/VideoSensorGrayIcon'\n\n// import SearchIcon from \"icons/SearchIcon\";\n\nimport StyledAccordion from 'components/StyledAccordion'\nimport StyledAutoComplete from 'components/StyledAutoComplete'\nimport StyledTable from 'components/StyledTable'\nimport StyledPagination from 'components/StyledPagination'\n\nimport {\n percentages,\n getColorsByOccupancy,\n getColorsByStatus,\n getBorderColorsByOccupancy,\n getPolygonCenter\n} from './utils'\nimport { styles } from './drawStyles'\nimport StyledSelect from 'components/StyledSelect'\n\nconst Map = ReactMapboxGl({\n accessToken: MAP_BOX_KEY\n})\n\nclass MapContainer extends Component {\n constructor (props) {\n super(props)\n this.state = {\n center: MAPCENTER,\n zoom: MAPZOOM,\n legendOpen: false,\n dashboardOpen: true,\n bounds: new mapboxgl.LngLatBounds(MAPCENTER, MAPCENTER),\n boundsMapped: null,\n reduced: null,\n selected: null,\n popupOpen: false,\n drawReady: false,\n popupType: null,\n canFly: true\n }\n this.drawControl = React.createRef()\n this._mapRef = React.createRef()\n }\n\n onRefChange = ref => {\n this.drawControl = ref\n this.setState({ drawReady: true })\n }\n\n componentDidMount () {\n const reduced = this.mapThroughData()\n if (\n this.props.data != null &&\n this.props.data.length === 1 &&\n this.props.data[0] != null\n ) {\n const { geometry } = this.props.data[0]\n if (\n this.props.isDrawAvailable &&\n this.drawControl != null &&\n this.drawControl.draw != null\n ) {\n const { features } = this.drawControl.draw.getAll()\n if (features.length === 0 && (this.props.geometry != null) != null) {\n this.flyToCoordinates(this.props.geometry != null, this.props.data[0])\n this.drawControl.draw.add(this.props.geometry != null)\n this.setState({ reduced: null })\n }\n } else {\n this.flyToCoordinates(geometry, this.props.data[0])\n this.setState({ reduced })\n }\n } else {\n if (reduced != null) {\n const boundsMapped = this.mapBoundsToArray(reduced.bounds)\n this.setState({\n reduced,\n bounds: reduced.bounds,\n boundsMapped: boundsMapped,\n occupiedSpots: reduced.occupiedSpots,\n totalSpots: reduced.totalSpots\n })\n }\n }\n }\n\n componentDidUpdate (prevProps, prevState) {\n if (\n (prevProps.data !== this.props.data ||\n (prevState.drawReady !== this.state.drawReady &&\n this.state.drawReady)) &&\n this.props.data != null &&\n this.props.type != null\n ) {\n const reduced = this.mapThroughData()\n\n if (this.props.data.length === 1 && this.props.data[0] != null) {\n const { geometry } = this.props.data[0]\n\n if (\n this.props.isDrawAvailable &&\n this.drawControl != null &&\n this.drawControl.draw != null\n ) {\n const { features } = this.drawControl.draw.getAll()\n if (features.length === 0 && this.props.geometry != null) {\n this.flyToCoordinates(this.props.geometry, this.props.data[0])\n this.drawControl.draw.add(this.props.geometry)\n this.setState({ reduced: reduced })\n }\n } else {\n this.flyToCoordinates(geometry, this.props.data[0])\n this.setState({\n reduced\n })\n }\n } else {\n if (\n reduced != null &&\n this.props.flyToLocation == null &&\n this.props.selected == null &&\n this.state.canFly\n ) {\n const boundsMapped = this.mapBoundsToArray(reduced.bounds)\n this.setState({\n reduced,\n bounds: reduced.bounds,\n boundsMapped:\n this.props.inDetail == null\n ? boundsMapped\n : this.state.boundsMapped,\n occupiedSpots: reduced.occupiedSpots,\n totalSpots: reduced.totalSpots,\n canFly: false\n })\n }\n }\n }\n\n if (\n !isEqual(prevProps.flyToLocation, this.props.flyToLocation) &&\n this.props.flyToLocation != null &&\n this.props.enableSearch\n ) {\n this.setState({\n boundsMapped: this.props.flyToLocation,\n selected: null,\n popupOpen: false,\n canFly: false\n })\n }\n\n if (\n prevProps.inDetail !== this.props.inDetail ||\n this.props.data?.length !== prevProps.data?.length ||\n !isEqual(this.props.filters, prevProps.filters)\n ) {\n this.setState({\n canFly: true\n })\n }\n }\n\n flyToCoordinates = (geometry, el, openPopup) => {\n if (this.props.type === 'areas') {\n if (geometry != null) {\n const { coordinates, type } = geometry\n if (type === 'Point' && coordinates != null) {\n this.setState({\n boundsMapped: [coordinates, coordinates],\n selected: el,\n legendOpen: true,\n popupOpen: openPopup\n })\n } else if (\n type === 'Polygon' &&\n coordinates != null &&\n coordinates[0] != null\n ) {\n const newBounds = this.coordinatesToBounds(coordinates[0])\n const newBoundsMapped = this.mapBoundsToArray(newBounds)\n this.setState({\n boundsMapped: newBoundsMapped,\n selected: el,\n legendOpen: true,\n popupOpen: openPopup,\n popupType: null\n })\n }\n }\n } else {\n if (geometry != null) {\n const { coordinates, type } = geometry\n if (type === 'Point' && coordinates != null) {\n this.setState({\n boundsMapped: [coordinates, coordinates],\n selected: el,\n popupOpen: openPopup,\n popupType: null\n })\n }\n }\n }\n }\n\n coordinatesToBounds = array => {\n if (array != null && array[0] != null) {\n const start = new mapboxgl.LngLatBounds(array[0], array[0])\n return array.reduce((acum, bounds) => acum.extend(bounds), start)\n }\n return null\n }\n\n mapBoundsToArray = boundsObject => {\n if (boundsObject != null) {\n return [\n [boundsObject._sw.lng, boundsObject._sw.lat],\n [boundsObject._ne.lng, boundsObject._ne.lat]\n ]\n }\n }\n\n generatePopup = type => {\n const { t } = this.props\n const { selected } = this.state\n if (selected != null) {\n const { bg, color } = getColorsByStatus(selected, type)\n return (\n \n \n {t(`assets.popup_title_${type}`)}\n {type === 'assets' && selected.deviceType != null && (\n \n {selected.uid}\n \n )}\n\n {(type === 'spots' || type === 'areas') && (\n \n {selected.uid}\n \n )}\n \n \n \n {type === 'assets' && selected.deviceType != null && (\n <>\n \n {t(`table.${selected.deviceType}`)}\n \n {t('map.type')}\n >\n )}\n {type === 'spots' && selected.spotType != null && (\n <>\n \n {t(`table.${selected.spotType}`)}\n \n {t('map.type')}\n >\n )}\n {type === 'areas' && selected.monitoringType != null && (\n <>\n \n {t(`table.${selected.monitoringType}`)}\n \n {t('table.monitoring_type')}\n >\n )}\n \n\n {selected.area != null && selected.area.name != null && (\n \n {selected.area.name}\n {t('map.area')}\n \n )}\n\n \n {type === 'assets' && (\n \n {selected.lastSeen != null\n ? moment(selected.lastSeen).format(DATETIME_FORMAT)\n : '-'}\n \n )}\n {type === 'spots' && (\n \n {selected.lastCommunication != null\n ? moment(selected.lastCommunication).format(DATETIME_FORMAT)\n : '-'}\n \n )}\n {type !== 'areas' && (\n {t('map.last_communication')}\n )}\n \n \n \n )\n }\n return null\n }\n\n generateLegends = () => {\n const { type, data, columns, t, hideLegends, hideListLegend, alarms, alarmsCount, pagination, changePagination, alarmsColumns, timestamp, timestampOptions, timestampChange } = this.props\n const { reduced } = this.state\n\n const sortedColumns = typeof columns === 'function'\n ? columns(this.flyToCoordinates).map(el => ({ ...el, label: t(el.label) }))\n : columns\n const changeTimestamp = e => timestampChange(e.target.value)\n\n const mapLegends = []\n if (type === 'areas' && data != null && reduced != null && !hideLegends) {\n const { legendOpen, dashboardOpen } = this.state\n mapLegends.push(\n \n \n {t('table.occupation_all')}:\n {percentages.map((el, index) => (\n \n \n {t(`table.${el.text}`)}\n \n ))}\n \n \n )\n\n if (!hideListLegend) {\n const sortedAlarmsColumns = alarmsColumns.map(el => ({ ...el, label: t(el.label) }))\n const sortedTimestampOptions = timestampOptions.map(el => ({ ...el, label: t(`map.${el.label}`) }))\n mapLegends.push(\n \n {alarms && (\n \n \n this.setState({ dashboardOpen: isExpanded })}\n summary={\n \n \n {!dashboardOpen ? t('map.show_alarms') : t('map.hide_alarms')}\n \n {!dashboardOpen && (\n {alarms.length}\n )}\n \n }\n details={\n \n {\n if (data != null && data.length === 1) {\n const { geometry } = this.props.data[0]\n this.flyToCoordinates(geometry, this.props.data[0])\n } else {\n this.setState({\n selected: null,\n boundsMapped: this.mapBoundsToArray(reduced.bounds)\n })\n }\n }}\n >\n {t('map.alarms_interval')}\n \n \n \n {alarms != null && (\n \n )}\n \n }\n />\n \n )}\n \n \n this.setState({ legendOpen: isExpanded })}\n summary={\n \n \n {!legendOpen ? t('map.show_areas') : t('map.hide_areas')}\n \n {!legendOpen && (\n {`${reduced.occupiedSpots}/${reduced.totalSpots}`}\n )}\n \n }\n details={\n \n {\n if (data != null && data.length === 1) {\n const { geometry } = this.props.data[0]\n this.flyToCoordinates(geometry, this.props.data[0])\n } else {\n this.setState({\n selected: null,\n boundsMapped: this.mapBoundsToArray(reduced.bounds)\n })\n }\n }}\n >\n {t('map.all_areas')}\n \n {`${reduced.occupiedSpots}/${reduced.totalSpots}`}\n \n \n \n \n }\n />\n \n \n )\n }\n }\n return mapLegends\n }\n\n clusterMarker = (coordinates, type, count) => {\n return (\n \n \n \n )\n }\n\n mapThroughData = () => {\n const { data, type } = this.props\n let startingBounds = new mapboxgl.LngLatBounds(MAPCENTER, MAPCENTER)\n if (data != null && type != null) {\n if (type === 'areas') {\n return data.reduce(\n (acum, current, index) => {\n if (current != null && current.geometry != null) {\n if (\n current.geometry.type === 'Polygon' &&\n current.geometry.coordinates != null &&\n current.geometry.coordinates[0] != null\n ) {\n acum.polygons.push(current)\n current.geometry.coordinates[0].forEach((coords, polyIndex) => {\n if (index === 0 && polyIndex === 0) {\n acum.bounds = new mapboxgl.LngLatBounds(coords, coords)\n }\n acum.bounds.extend(coords)\n })\n } else if (current.geometry.type === 'Point') {\n acum.points.push(current)\n if (index === 0) {\n acum.bounds = new mapboxgl.LngLatBounds(\n current.geometry.coordinates,\n current.geometry.coordinates\n )\n }\n acum.bounds.extend(current.geometry.coordinates)\n }\n if (current.capacity != null && !isNaN(current.capacity)) {\n acum.totalSpots += current.capacity\n }\n if (\n current.occupation &&\n !isNaN(+current.occupation.all.split('/')[0])\n ) {\n acum.occupiedSpots += +current.occupation.all.split('/')[0]\n }\n }\n return acum\n },\n {\n polygons: [],\n points: [],\n lines: [],\n bounds: new mapboxgl.LngLatBounds(MAPCENTER, MAPCENTER),\n totalSpots: 0,\n occupiedSpots: 0\n }\n )\n } else {\n if (\n data != null &&\n data[0] != null &&\n data[0].geometry != null &&\n data[0].geometry.coordinates != null\n ) {\n startingBounds = new mapboxgl.LngLatBounds(\n data[0].geometry.coordinates,\n data[0].geometry.coordinates\n )\n }\n return data.reduce(\n (acum, current, index) => {\n if (current != null && current.geometry != null) {\n if (current.geometry.type === 'Point') {\n acum.points.push(current)\n acum.bounds.extend(current.geometry.coordinates)\n }\n }\n return acum\n },\n {\n points: [],\n bounds: startingBounds\n }\n )\n }\n }\n }\n\n showSpots = spotsArray => {\n const { showSpots } = this.props\n if (showSpots && spotsArray != null) {\n return spotsArray.map(\n (spot, index) =>\n spot.geometry != null && (\n \n this.setState({\n popupOpen: true,\n selected: spot,\n popupType: 'spots'\n })}\n anchor='center'\n style={{\n cursor: 'pointer'\n }}\n >\n <>\n {spot.occupied != null && spot.occupied === true && (\n \n )}\n {spot.occupied != null && spot.occupied === false && (\n \n )}\n {spot.occupied == null && (\n \n )}\n >\n \n )\n )\n }\n }\n\n showSensors = sensorsArray => {\n /*eslint-disable */\n\n const { showSensors } = this.props\n if (showSensors && sensorsArray != null) {\n return sensorsArray.map(\n (sensor, index) =>\n sensor.geometry != null && (\n \n this.setState({\n popupOpen: true,\n selected: sensor,\n popupType: 'assets',\n })\n }\n anchor=\"center\"\n style={{\n cursor: 'pointer',\n }}\n >\n {sensor.status === 'ok' && (\n \n )}\n {sensor.status === 'not_ok' && (\n \n )}\n {sensor.status === 'unknown' && (\n \n )}\n {sensor.status == null && (\n \n )}\n \n )\n )\n }\n }\n\n generateLayers = () => {\n const { type, data, isDrawAvailable, inDetail } = this.props\n const { reduced, currentZoom } = this.state\n const mapLayers = []\n const assetHeight = inDetail ? 48 : 24 + ((3 / 4) * currentZoom ?? 0)\n const assetWidth = inDetail ? 48 : 24 + ((3 / 4) * currentZoom ?? 0)\n if (!isDrawAvailable) {\n if (type === 'areas' && data != null && reduced != null) {\n const features = [\n reduced.polygons.map((el, index) => {\n return (\n \n \n (this._mapRef.getCanvas().style.cursor = 'pointer')\n }\n onMouseLeave={e =>\n (this._mapRef.getCanvas().style.cursor = '')\n }\n >\n {\n e.originalEvent.preventDefault()\n this.flyToCoordinates(el.geometry, el, true)\n }}\n coordinates={el.geometry.coordinates}\n style={{ cursor: 'pointer' }}\n />\n \n \n {\n e.originalEvent.preventDefault()\n this.flyToCoordinates(el.geometry, el, true)\n }}\n />\n \n \n {\n e.originalEvent.preventDefault()\n this.flyToCoordinates(el.geometry, el, true)\n }}\n />\n \n \n {\n e.originalEvent.preventDefault()\n this.flyToCoordinates(el.geometry, el, true)\n }}\n />\n \n <>{this.showSpots(el.spots)}>\n <>{this.showSensors(el.sensors)}>\n \n )\n }),\n ]\n\n const points = [\n reduced.points.map((el, index) => (\n \n (this._mapRef.getCanvas().style.cursor = 'pointer')\n }\n onMouseLeave={e => (this._mapRef.getCanvas().style.cursor = '')}\n >\n this.flyToCoordinates(el.geometry, el)}\n style={{ cursor: 'pointer' }}\n />\n \n )),\n ]\n mapLayers.push(...[...features, ...points])\n } else if (type === 'assets' && data != null && reduced != null) {\n /*eslint-disable */\n const cluster = (\n \n this.clusterMarker(coordinates, type, pointCount)\n }\n zoomOnClick={true}\n key={`${type}-cluster`}\n radius={40}\n tabIndex={2}\n >\n {reduced?.points?.map((el, index) => {\n const isPanelMonitoringEquipment = el.deviceType === 'panel_monitoring_equipment';\n return (\n this.flyToCoordinates(el.geometry, el, true)}\n anchor=\"bottom\"\n style={{\n cursor: 'pointer',\n zIndex: 10 + index,\n }}\n tabIndex={10}\n >\n {el.deviceType === 'sensor' &&\n el.status === 'ok' &&\n el.monitoringType === 'individual_sensor' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status === 'not_ok' &&\n el.monitoringType === 'individual_sensor' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status === 'unknown' &&\n el.monitoringType === 'individual_sensor' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status == null &&\n el.monitoringType === 'individual_sensor' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status === 'ok' &&\n el.monitoringType === 'counting_sensor' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status === 'not_ok' &&\n el.monitoringType === 'counting_sensor' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status === 'unknown' &&\n el.monitoringType === 'counting_sensor' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status == null &&\n el.monitoringType === 'counting_sensor' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status === 'ok' &&\n el.monitoringType === 'video_feed' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status === 'not_ok' &&\n el.monitoringType === 'video_feed' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status === 'unknown' &&\n el.monitoringType === 'video_feed' && (\n \n )}\n {el.deviceType === 'sensor' &&\n el.status == null &&\n el.monitoringType === 'video_feed' && (\n \n )}\n\n {el.deviceType === 'gateway' && el.status === 'ok' && (\n \n )}\n {el.deviceType === 'gateway' && el.status === 'not_ok' && (\n \n )}\n {el.deviceType === 'gateway' && el.status === 'unknown' && (\n \n )}\n {el.deviceType === 'gateway' && el.status == null && (\n \n )}\n\n {isPanelMonitoringEquipment && el.status === 'ok' && (\n \n )}\n {isPanelMonitoringEquipment && el.status === 'not_ok' && (\n \n )}\n {isPanelMonitoringEquipment && el.status === 'unknown' && (\n \n )}\n {isPanelMonitoringEquipment && el.status == null && (\n \n )}\n\n {(el.deviceType === 'repeater' ||\n el.deviceType === 'signal_repeater') &&\n el.status === 'ok' && (\n \n )}\n {(el.deviceType === 'repeater' ||\n el.deviceType === 'signal_repeater') &&\n el.status === 'not_ok' && (\n \n )}\n {(el.deviceType === 'repeater' ||\n el.deviceType === 'signal_repeater') &&\n el.status === 'unknown' && (\n \n )}\n {(el.deviceType === 'repeater' ||\n el.deviceType === 'signal_repeater') &&\n el.status == null && (\n \n )}\n\n {el.deviceType === 'panel' && el.status === 'ok' && (\n \n )}\n {el.deviceType === 'panel' && el.status === 'not_ok' && (\n \n )}\n {el.deviceType === 'panel' && (el.status === 'unknown' || el.status == null) && (\n \n )}\n {/* {el.deviceType === 'panel' && el.status == null && (\n \n )} */}\n \n )\n })}\n \n )\n\n const otherMarkes = reduced?.points?.length === 1 && (\n <>\n <>{this.showSpots(reduced?.points?.[0]?.spot)}>\n <>{this.showSensors(reduced?.points?.[0]?.sensors)}>\n >\n )\n mapLayers.push(...[cluster])\n } else if (type === 'spots' && data != null && reduced != null) {\n const cluster = (\n \n this.clusterMarker(coordinates, 'type-spots', getLeaves()?.length)\n }\n zoomOnClick={true}\n key={`type-spots-cluster`}\n radius={40}\n tabIndex={2}\n >\n {reduced.points.map((el, index) => (\n this.flyToCoordinates(el.geometry, el, true)}\n anchor=\"center\"\n style={{\n cursor: 'pointer',\n }}\n >\n <>\n {el.occupied != null && el.occupied === true && (\n \n )}\n {el.occupied != null && el.occupied === false && (\n \n )}\n {el.occupied == null && (\n \n )}\n >\n \n ))}\n \n )\n\n mapLayers.push(...[cluster])\n }\n }\n return mapLayers\n }\n\n handleDrawCreate = ({ features }) => {\n const { setGeometry } = this.props\n if (features != null && features[0] != null) {\n const { features: featuresDrawn } = this.drawControl.draw.getAll()\n if (featuresDrawn.length > 1) {\n this.drawControl.draw.delete(\n featuresDrawn.filter(el => el.id !== features[0].id).map(el => el.id)\n )\n }\n\n setGeometry(features[0].geometry)\n }\n }\n\n handleDrawUpdate = ({ features }) => {\n const { setGeometry } = this.props\n if (features != null && features[0] != null) {\n setGeometry(features[0].geometry)\n }\n }\n\n handleDelete = ({ features }) => {\n const { setGeometry } = this.props\n setGeometry(null)\n }\n\n handleMapClick = (e, event) => {\n if (event.originalEvent.defaultPrevented) {\n return\n }\n const { popupOpen } = this.state\n\n if (popupOpen) {\n this.setState({ popupOpen: false, popupType: null })\n }\n }\n\n getControls = () => {\n const { type } = this.props\n\n if (type === 'areas') {\n return {\n point: false,\n line_string: false,\n polygon: true,\n trash: true,\n combine_features: false,\n uncombine_features: false,\n }\n } else {\n return {\n point: true,\n line_string: false,\n polygon: false,\n trash: true,\n combine_features: false,\n uncombine_features: false,\n }\n }\n }\n\n getPopupPosition = () => {\n const { type, inDetail } = this.props\n const { popupType } = this.state\n if (inDetail) {\n return (popupType ?? type) === 'spots' ? [30, -8] : [35, -30]\n }\n\n return (popupType ?? type) === 'spots' ? [20, -5] : [20, -24]\n }\n\n render() {\n const {\n center,\n zoom,\n boundsMapped,\n popupOpen,\n selected,\n popupType,\n } = this.state\n const {\n isDrawAvailable,\n type,\n enableSearch,\n hidePopups,\n data,\n flyToLocation,\n } = this.props\n const controls = isDrawAvailable && this.getControls()\n\n return (\n \n {this.generateLegends()}\n 0) ||\n flyToLocation\n ? boundsMapped\n : null\n }\n fitBoundsOptions={{ padding: 50 }}\n onClick={this.handleMapClick}\n onStyleLoad={map => {\n this._mapRef = map\n }}\n onZoom={map => {\n this.setState({ currentZoom: map.getZoom() })\n }}\n renderChildrenInPortal={true}\n >\n \n\n {isDrawAvailable && controls && (\n \n )}\n\n {this.generateLayers()}\n {!hidePopups &&\n popupOpen &&\n selected != null &&\n type !== 'areas' &&\n popupType !== 'areas' && (\n /*eslint-disable */\n \n {this.generatePopup(popupType ?? type)}\n \n /* eslint-enable */\n )}\n {!hidePopups &&\n popupOpen &&\n selected != null &&\n (type === 'areas' || popupType === 'areas') && (\n /*eslint-disable */\n \n {this.generatePopup(popupType ?? type)}\n \n /* eslint-enable */\n )}\n\n {enableSearch && this.props?.search != null && (\n /*eslint-disable */\n\n \n \n \n /* eslint-enable */\n )}\n \n \n )\n }\n}\n\nexport default withTranslation()(MapContainer)\n\nconst Wrapper = styled.div`\n height: 100%;\n width: 100%;\n position: relative;\n &:focus {\n outline: none;\n }\n\n & .mapboxgl-ctrl-top-left .mapboxgl-ctrl {\n margin: 0.5rem 0 0 0.5rem;\n }\n & .mapboxgl-ctrl-bottom-left .mapboxgl-ctrl {\n margin: 0 0 0.5rem 3.5rem;\n }\n\n #zoomIn,\n #zoomOut,\n .mapboxgl-ctrl-group {\n border-radius: 0 !important;\n box-shadow: none !important;\n }\n #zoomIn,\n #zoomOut {\n background-color: white !important;\n\n &:hover {\n background-color: rgba(249, 249, 249) !important;\n }\n }\n .mapboxgl-map > div {\n box-shadow: none !important;\n }\n`\n\nconst AreasBodyWrapper = styled.div`\n width: 100%;\n\n & .MuiTable-root {\n background: var(--white-color);\n }\n`\n\nconst AreasAlarmsWrapper = styled.div`\n position: absolute;\n top: 1.5rem;\n left: 1.5rem;\n display: flex;\n width: 100%;\n max-width: calc(100vw - 8rem);\n justify-content: space-between;\n margin: auto;\n\n @media (max-width: 1219px) {\n max-width: calc(100vw - 3rem);\n }\n\n @media (max-width: 899px) {\n flex-direction: column;\n }\n`\n\nconst TotalAreasLine = styled.div`\n display: flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n padding: 0.5rem;\n\n cursor: pointer;\n`\n\nconst TotalAreasText = styled.div`\n font-weight: 700;\n`\n\nconst InfoWrapper = styled.div`\n position: absolute;\n z-index: 100;\n bottom: 1.5rem;\n right: 1.5rem;\n padding: 1rem;\n background-color: var(--white-color);\n display: flex;\n flex-direction: column;\n`\n\nconst InfoLine = styled.div`\n display: flex;\n\n & + & {\n margin-top: 0.5rem;\n }\n`\n\nconst ColorSquare = styled.div`\n height: 1rem;\n width: 1rem;\n background-color: ${({ bg }) => bg || 'var(--primary-color)'};\n border-style: solid;\n border-width: 0.125rem;\n border-radius: 0.25rem;\n border-color: ${({ borderColor }) =>\n borderColor || 'var(--default-blue-color)'};\n`\n\nconst InfoTitle = styled.h5`\n font-size: 1rem;\n font-weight: 700;\n margin-bottom: 0.5rem;\n`\n\nconst InfoText = styled.p`\n margin-left: 0.5rem;\n font-size: 0.875rem;\n line-height: 1em;\n font-weight: 400;\n`\n\nconst AreasLegendWrapper = styled.div`\n z-index: 100;\n\n & .MuiTableSortLabel-root.MuiTableSortLabel-active {\n &.MuiTableSortLabel-root.MuiTableSortLabel-active .MuiTableSortLabel-icon {\n color: #fff;\n }\n }\n`\n\nconst AreaLegendTitle = styled.div`\n background-color: var(--primary-color);\n display: flex;\n align-items: center;\n padding: 0.5rem;\n width: 100%;\n\n min-width: 15rem;\n`\n\nconst AreaLegendTitleText = styled.p`\n color: var(--white-color);\n font-weight: 700;\n text-transform: uppercase;\n font-size: 1rem;\n line-height: 1.5rem;\n`\n\nconst Badge = styled.div`\n --bg-color: var(--white-color);\n --color: var(--primary-color);\n\n padding: 0.25rem 0.5rem;\n background-color: var(--bg-color);\n border-radius: 1rem;\n display: flex;\n color: var(--color);\n font-weight: 700;\n font-size: 0.75rem;\n\n ${AreaLegendTitleText} + & {\n margin-left: 0.5rem;\n }\n ${TotalAreasText} + & {\n margin-left: 0.5rem;\n }\n\n ${props =>\n props.type === 'secondary' &&\n css`\n --bg-color: var(--sonic-silver-color);\n --color: var(--white-color);\n `}\n`\n\nconst DashboardWrapper = styled.div`\n z-index: 99;\n background-color: var(--white-color);\n`\n\nconst DashboardBodyWrapper = styled.div`\n width: 100%;\n overflow: auto;\n max-height: calc(100vh - (60px + 9rem));\n\n @media (max-width: 900px) {\n max-height: calc(50vh - 2rem);\n }\n\n & .MuiTableSortLabel-root.MuiTableSortLabel-active {\n color: var(--white-color);\n\n &.MuiTableSortLabel-root.MuiTableSortLabel-active .MuiTableSortLabel-icon {\n color: #fff;\n }\n }\n`\n\nconst DashboardFilterLine = styled.div`\n display: flex;\n width: 100%;\n justify-content: space-between;\n align-items: center;\n padding: 0.5rem;\n gap: 10px;\n`\n\nconst PopupWrapper = styled.div`\n position: wrapper;\n background-color: var(--white-color);\n min-width: 13.125rem;\n overflow: hidden;\n`\n\nconst PopupBodyLabel = styled.p`\n text-transform: uppercase;\n color: inherit;\n font-size: 0.625rem;\n font-weight: bold;\n letter-spacing: 0;\n line-height: 1.4em;\n`\n\nconst PopupBodyWrapper = styled.div`\n padding: 0.625rem 1.25rem 1.25rem;\n\n & ${PopupBodyLabel} {\n color: var(--success-color);\n color: ${({ color }) => color};\n }\n`\n\nconst PopupTitleWrapper = styled.div`\n padding: 0.5rem 1.25rem 0.75rem;\n background-color: var(--success-color);\n background-color: ${({ backgroundColor }) => backgroundColor};\n color: var(--white-color);\n color: ${({ color }) => color};\n\n font-size: 0.875rem;\n letter-spacing: 0;\n line-height: 1.4285714286em;\n display: flex;\n flex-direction: column;\n`\nconst PopupTitle = styled.p`\n text-transform: uppercase;\n`\nconst PopupSubTitle = styled.p`\n margin-top: 0.25rem;\n`\nconst PopupBodyValue = styled.div`\n color: var(--breadcrumb-gray-color);\n font-size: 1.125rem;\n letter-spacing: 0;\n line-height: 1.4444444444em;\n text-transform: uppercase;\n`\nconst PopupBodyLine = styled.div`\n & + & {\n margin-top: 0.5rem;\n }\n`\n\nconst SearchWrapper = styled.div`\n position: absolute;\n\n display: flex;\n\n left: 3.5rem;\n top: 0.5rem;\n width: 16.125rem;\n`\n\nconst StyledLink = styled(Link)`\n width: fit-content;\n &:hover {\n text-decoration: underline;\n }\n`\n","import axios from 'axios'\n\nimport { BASE_API_URL } from 'config'\n\nconst AREAS_URL = BASE_API_URL + '/areas/'\nconst DETAILS_URL = BASE_API_URL + '/areas' // without / to better understand on axios\nconst ALARMS_URL = BASE_API_URL + '/alarms/'\nconst ALARMS_FILTERED_URL = ALARMS_URL + '?type=forbidden_transit&type=area_maxed_out&type=motorhome_forbidden_parking'\n\nconst logic = {\n timestampOptions: [\n {\n label: 'last_30_min',\n value: 'last_30_min'\n },\n {\n label: 'last_hour',\n value: 'last_hour'\n },\n {\n label: 'today',\n value: 'today'\n }\n ],\n getAreas: () => {\n return Promise.resolve().then(() => {\n return axios.get(AREAS_URL)\n })\n },\n getAlarmsFiltered: (date, limit, offset) => {\n return Promise.resolve().then(() => {\n return axios.get(`${ALARMS_FILTERED_URL}&limit=${limit}&offset=${offset}&updated_at__gte=${date}`)\n })\n },\n getAreaDetails: id =>\n Promise.resolve().then(() => {\n return axios.get(`${DETAILS_URL}/${id}/`)\n })\n}\n\nexport default logic\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import React from 'react'\nimport styled from 'styled-components'\nimport { DATETIME_FORMAT } from 'config'\nimport moment from 'moment'\n\nimport { getColorsByOccupancy, getBorderColorsByOccupancy } from 'containers/MapContainer/utils'\n\nimport ParkingIcon from 'icons/ParkingIcon'\nimport CarIcon from 'icons/CarIcon'\nimport DisabledIcon from 'icons/DisabledIcon'\nimport MotorhomeIcon from 'icons/MotorhomeIcon'\nimport InfraestruturasPortugalIcon from 'icons/InfraestruturasPortugalIcon'\nimport NotAllowedIcon from 'icons/NotAllowedIcon'\n\nconst getOccupiedValues = occupation => {\n if (!occupation || occupation === '0/0') return '-'\n if (+occupation) return occupation\n\n const occupiedPlaces = occupation.split('/')[0]\n return +occupiedPlaces\n}\n\nexport const dashboardColumns = [\n {\n key: 'time',\n label: 'table.time',\n render: (element) =>\n element.updatedAt != null\n ? moment(element.updatedAt).format(DATETIME_FORMAT).split(' ')[1]\n : '-'\n },\n {\n key: 'parkingId',\n label: 'table.area',\n render: (element) =>\n element.parkingId != null\n ? {element.parkingId}\n : '-'\n },\n {\n key: 'description',\n label: 'table.description',\n render: (element) =>\n element.description != null\n ? {element.description}\n : '-'\n }\n]\n\nconst columns = (flyToCoordinates) => [\n {\n key: 'name',\n label: '',\n render: (element) =>\n \n flyToCoordinates(element.geometry, element)}\n >\n \n {element.name ? element.name : element.uid}\n \n \n },\n {\n key: 'capacity',\n label: 'table.occupation_max',\n icon: ,\n render: (element) => element.capacity ? element.capacity : '-'\n },\n {\n key: 'normal',\n label: 'table.normal_places',\n icon: ,\n render: (element) => getOccupiedValues(element.occupation?.normal)\n },\n {\n key: 'handicapped',\n label: 'table.handicapped',\n icon: ,\n render: (element) => getOccupiedValues(element.occupation?.handicapped)\n },\n {\n key: 'motorhome',\n label: 'table.motorhomes',\n icon: ,\n render: (element) => getOccupiedValues(element.occupation?.motorhome)\n },\n {\n key: 'cp',\n label: 'table.cp_label',\n icon: ,\n render: (element) => getOccupiedValues(element.occupation?.cp)\n },\n {\n key: 'forbiddenTransitCount30Min',\n label: 'table.not_allowed',\n icon: ,\n render: (element) => getOccupiedValues(element.forbiddenTransitCount30Min)\n }\n]\n\nexport default columns\n\nconst AreaLineWrapper = styled.div`\n border-top: 1px solid var(--platinium-gray-color);\n background-color: var(--white-color);\n width: 34px;\n\n cursor: pointer;\n`\n\nconst StatusWrapper = styled.div`\n --bg-color: ${({ bg }) => bg || 'var(--primary-color)'};\n --border-color: ${({ borderColor }) =>\n borderColor || 'var(--default-blue-color)'};\n background-color: var(--bg-color);\n border-style: solid;\n border-width: 0.125rem;\n border-radius: 0.25rem;\n border-color: var(--border-color);\n padding: 5px;\n width: 34px;\n text-align: center;\n color: var(--white-color);\n`\nconst Description = styled.p`\nwhite-space: normal;\n`\n","import React, {\n useEffect,\n useState,\n useContext,\n useCallback,\n memo\n} from 'react'\nimport styled from 'styled-components'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport { Context as SocketContext } from 'providers/SocketProvider/socketProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport MapContainer from 'containers/MapContainer'\n\nimport logic from './logic'\n\nimport columns, { dashboardColumns } from './columns'\n\nconst convertTimeToLocal = timestamp => {\n const TIMESTAMP_TIME = new Date()\n switch (timestamp) {\n case 'today':\n TIMESTAMP_TIME.setHours(0)\n TIMESTAMP_TIME.setMinutes(0)\n break\n case 'last_hour':\n TIMESTAMP_TIME.setHours(TIMESTAMP_TIME.getHours() - 1)\n break\n default:\n TIMESTAMP_TIME.setMinutes(TIMESTAMP_TIME.getMinutes() - 30)\n }\n return TIMESTAMP_TIME.toLocaleString('sv').replace(' ', 'T')\n}\n\nconst HomePage = ({ children, ...props }) => {\n const { responsiveHandlers } = props\n const { actions } = useContext(AuthContext)\n const { store: wsStore } = useContext(SocketContext)\n\n const [areaState, setAreaState] = useState({\n areas: [],\n loading: true\n })\n const [alarmsState, setAlarmsState] = useState({\n alarms: [],\n alarmsCount: 0,\n timestamp: logic.timestampOptions[0].value,\n loading: true\n })\n\n const [pagination, setPagination] = useState({\n page: 1,\n offset: 1,\n limit: 100\n })\n\n const fetchAreas = useCallback(() => {\n logic\n .getAreas()\n .then(response => {\n if (response.data) {\n const { data } = response\n setAreaState({ areas: data.results, loading: false })\n } else {\n setAreaState({ areas: [], loading: false })\n }\n })\n .catch(err => {\n console.log({ err })\n setAreaState({ areas: [], loading: false })\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }, [actions])\n\n const fetchAlarmsFiltered = useCallback(() => {\n logic\n .getAlarmsFiltered(\n convertTimeToLocal(alarmsState.timestamp),\n pagination.limit,\n pagination.offset\n )\n .then(response => {\n if (response.data) {\n const { data } = response\n setAlarmsState(prev => ({\n ...prev,\n alarms: data.results,\n alarmsCount: data.count,\n loading: false\n }))\n } else {\n setAlarmsState(prev => ({\n ...prev,\n alarms: [],\n alarmsCount: 0,\n loading: false\n }))\n }\n })\n .catch(err => {\n setAlarmsState(prev => ({\n ...prev,\n alarms: [],\n alarmsCount: 0,\n loading: false\n }))\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }, [actions, alarmsState.timestamp, pagination.offset, pagination.limit])\n\n const fetchAreaAndUpdate = useCallback(\n id => {\n logic.getAreaDetails(id).then(response => {\n if (response.data) {\n const { data } = response\n const areasCopy = JSON.parse(JSON.stringify(areaState.areas))\n const found = areasCopy.findIndex(el => el.id === id)\n if (found >= 0) {\n areasCopy[found] = data\n setAreaState({\n ...areaState,\n areas: areasCopy\n })\n }\n }\n })\n },\n [areaState]\n )\n\n const changeTimestamp = useCallback(newTimestamp => {\n setAlarmsState(prev => ({\n ...prev,\n timestamp: newTimestamp\n }))\n }, [])\n\n const changePagination = useCallback(\n (event, page) =>\n setPagination({\n ...pagination,\n page: page,\n offset: (page - 1) * pagination.limit + 1\n }),\n [pagination, setPagination]\n )\n\n useEffect(() => {\n fetchAreas()\n // eslint-disable-next-line\n }, [])\n\n useEffect(() => {\n fetchAlarmsFiltered()\n // eslint-disable-next-line\n }, [alarmsState.timestamp, pagination.page, pagination.offset])\n\n useEffect(() => {\n if (wsStore.message != null) {\n handleWSMessages(wsStore.message)\n }\n // eslint-disable-next-line\n }, [wsStore.message])\n\n const handleWSMessages = useCallback(\n msg => {\n if (\n msg != null &&\n (msg.sender === 'area' || msg.sender === 'areaevent')\n ) {\n if (msg.type === 'new' || msg.type === 'delete') {\n fetchAlarmsFiltered()\n fetchAreas()\n } else if (msg.type === 'update' && msg?.content?.id) {\n fetchAreaAndUpdate(msg?.content?.id)\n } else {\n fetchAlarmsFiltered()\n fetchAreas()\n }\n }\n },\n [fetchAreaAndUpdate, fetchAreas, fetchAlarmsFiltered]\n )\n\n return (\n \n \n \n )\n}\n\nexport default memo(withResponsive(HomePage))\n\nconst Wrapper = styled.div`\n height: 100%;\n width: 100%;\n`\n","import { css } from 'styled-components'\n\nexport default css`\n color: var(--primary-color);\n font-size: 1.25rem;\n font-weight: normal;\n letter-spacing: 0;\n line-height: 1em;\n\n ${({ theme }) => theme.smallDesktop`\n font-size: 1.5rem;\n `}\n`\n","import styled from 'styled-components'\n\nexport default styled.div`\n display: grid;\n grid-template-rows: auto;\n\n max-width: 100%;\n grid-template-columns: repeat(4, 1fr);\n column-gap: 1.5rem;\n width: calc(100% - 3rem);\n margin: ${({ margin }) => margin || '0 1.5rem'};\n margin-bottom: ${({ marginBottom }) => marginBottom};\n align-items: ${({ alignItems }) => alignItems};\n\n height: ${({ height }) => height || 'fit-content'};\n flex-grow: ${({ flexgrow }) => flexgrow || '1'};\n position: ${({ position }) => position};\n\n ${({ theme }) => theme.smallDesktop`\n overflow: visible;\n max-width: 60rem;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n column-gap: 2rem;\n width: 100%;\n margin: ${({ margin }) => margin || '0 auto'};\n margin-bottom: ${({ marginBottom }) => marginBottom};\n `}\n ${({ theme }) => theme.desktop`\n max-width: 85rem;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n column-gap: 2rem;\n width: 100%;\n margin: ${({ margin }) => margin || '0 auto'};\n margin-bottom: ${({ marginBottom }) => marginBottom};\n `}\n\n ${({ theme }) => theme.largeDesktop`\n max-width: 109rem;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n column-gap: 2rem;\n width: 100%;\n margin: ${({ margin }) => margin || '0 auto'};\n margin-bottom: ${({ marginBottom }) => marginBottom};\n `}\n`\n","import React, { memo } from 'react'\nimport styled, { css } from 'styled-components'\nimport Button from '@material-ui/core/Button'\n\nimport Tooltip from '@material-ui/core/Tooltip'\n\nexport default memo(({ children, ...props }) => {\n const button = (\n \n {children}\n \n )\n if (props.tooltip != null) {\n return (\n \n {button}\n \n )\n }\n return button\n})\n\nconst Wrapper = styled(Button)`\n &.MuiButton-outlined {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.5rem;\n }\n &.MuiButton-root {\n min-width: unset;\n min-height: 2.5rem;\n width: 100%;\n width: ${({ width }) => width};\n font-size: 0.75rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1em;\n text-align: center;\n text-transform: uppercase;\n border-radius: 0;\n\n color: var(--black-color);\n\n &.MuiButton-outlined.Mui-disabled{\n border: none;\n }\n\n &.MuiButton-root.Mui-disabled{\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n ${props =>\n props.type === 'primary' &&\n css`\n background-color: var(--primary-color);\n color: var(--white-color);\n transition: background-color 0.2s ease-in-out;\n border: none;\n\n &:hover {\n background-color: var(--darker-primary-color);\n transition: background-color 0.2s ease-in-out;\n }\n `}\n\n ${props =>\n props.type === 'inactive' &&\n css`\n background-color: var(--breadcrumb-gray-color);\n color: var(--white-color);\n transition: background-color 0.2s ease-in-out;\n border: none;\n\n &:hover {\n background-color: var(--dark-gray-color);\n transition: background-color 0.2s ease-in-out;\n }\n `}\n\n ${props =>\n (props.type === 'error' || props.type === 'danger') &&\n css`\n background-color: var(--error-color);\n color: var(--white-color);\n transition: background-color 0.2s ease-in-out;\n border: none;\n\n &:hover {\n background-color: var(--dark-error-color);\n transition: background-color 0.2s ease-in-out;\n }\n `}\n }\n`\n","import React, { memo } from 'react'\nimport styled, { css } from 'styled-components'\nimport isEqual from 'lodash.isequal'\n\nimport StyledInput from 'components/StyledInput'\n\nconst InputAndLabel = ({ children, ...props }) => (\n \n \n {props.label}\n \n \n {props.masked && props.error && (\n {props.helperText}\n )}\n \n)\n\nexport default memo(InputAndLabel, isEqual)\n\nconst Wrapper = styled.div`\n margin-bottom: 1.5rem;\n font-size: 0.75rem;\n ${props =>\n props.error &&\n css`\n margin-bottom: calc(1.5rem - 1.66em);\n `}\n\n ${props =>\n props.disabled &&\n css`\n cursor: not-allowed;\n `}\n`\n\nconst Label = styled.p`\n color: var(--breadcrumb-gray-color);\n font-size: 0.875rem;\n letter-spacing: 0;\n line-height: 1em;\n\n margin-bottom: 0.5rem;\n\n ${props =>\n props.disabled &&\n css`\n color: var(--platinium-gray-color);\n `}\n`\n\nconst StyledError = styled.p`\n color: var(--material-error-color);\n font-family: var(--primary-font);\n margin: 0;\n\n font-size: 0.75rem;\n text-align: left;\n font-weight: 400;\n line-height: 1.66;\n`\n","export default __webpack_public_path__ + \"static/media/background_smart_parking.d61922c6.jpg\";","export const checkValidation = (form, validations) => {\n const clone = { ...form }\n let invalid = false\n\n for (const key in clone) {\n if (Object.prototype.hasOwnProperty.call(clone, key)) {\n const element = clone[key]\n const validationList = validations[key]\n element.valid = true\n\n if (validationList && validationList.length) {\n for (let index = 0; index < validationList.length; index++) {\n const check = validationList[index]\n const response = check(element.value, form)\n\n if (response.result === 'end') {\n // put valid true and empty message like default value\n element.valid = true\n element.message = null\n break\n }\n\n if (!response.result) {\n element.valid = false\n element.message = response.message\n invalid = true\n } else {\n element.valid = true\n element.message = null\n }\n }\n }\n }\n }\n\n return { invalid, form: clone }\n}\n\nexport const isValidEmail = (value, state) => {\n const message = 'email'\n const regex = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n if (!regex.test(value)) {\n return { result: false, message }\n }\n\n return { result: true }\n}\n\nexport const isRequired = (value, state) => {\n const message = 'required'\n\n if (value == null || value === '') {\n return { result: false, message }\n }\n\n return { result: true }\n}\n\nexport const isValidWebsite = (value, state) => {\n const message = 'website'\n const regex = /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w\\-._~:/?#[\\]@!$&'()*+,;=.]+$/\n if (!regex.test(value)) {\n return { result: false, message }\n }\n\n return { result: true }\n}\n\nexport const passwordsMatch = (password, confirmPassword) => {\n const message = 'passwords_match'\n const regex =\n password != null && confirmPassword != null && password === confirmPassword\n if (!regex) {\n return { valid: false, message, value: confirmPassword }\n }\n\n return { valid: true, value: confirmPassword }\n}\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\nimport { BASE_API_URL } from 'config'\nconst LOGIN_URL = BASE_API_URL + '/token/web/'\n\nconst VALIDATIONS = {\n username: [Check.isRequired],\n password: [Check.isRequired]\n}\n\nconst logic = {\n defaultValues: {\n username: { value: '' },\n password: { value: '' }\n },\n login: (form, setForm) => {\n return Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS)\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n setForm({ ...validation.form })\n\n const params = mapValues(form, ({ value }) => value)\n return axios.post(LOGIN_URL, { ...params })\n })\n }\n}\n\nexport default logic\n","import React, { useState, useContext, useCallback } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { useTranslation } from 'react-i18next'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\n\nimport { Link } from 'react-router-dom'\n\nimport TitleStyle from 'styled/TitleStyle'\n\nimport Container from 'components/Container'\nimport StyledButton from 'components/StyledButton'\n\nimport InputAndLabel from 'containers/InputAndLabel'\n\nimport Background from 'images/background_smart_parking.jpg'\n\nimport logic from './logic'\n\nconst Login = ({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n const { t } = useTranslation()\n const [form, setForm] = useState(logic.defaultValues)\n\n const [submitState, setSubmitState] = useState({\n hasSubmitted: false,\n submitting: false,\n error: null\n })\n\n const memoSetForm = useCallback(form => setForm({ ...form }), [])\n\n const handleSubmit = useCallback(\n event => {\n event.preventDefault()\n // juntar estes states\n setSubmitState(submitState => ({\n ...submitState,\n error: null,\n hasSubmitted: true,\n submitting: true\n }))\n logic\n .login(form, memoSetForm)\n .then(response => {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n const { data } = response\n actions.login({ ...data })\n })\n .catch(err => {\n console.log({ err })\n\n if (err == null || err.response == null) {\n actions.serverError()\n }\n if (err.response != null && err.response.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n error: t('errors.login')\n }))\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n },\n [actions, form, t, memoSetForm]\n )\n\n const handleChange = useCallback(\n (key, value) => {\n setForm({\n ...form,\n [key]: {\n ...form[key],\n value: value\n }\n })\n },\n [form]\n )\n\n const memoHandleChangeValue = useCallback(\n name => e => {\n handleChange(name, e.target.value)\n },\n [handleChange]\n )\n\n return (\n \n \n \n \n {form != null && (\n \n {t('login')}\n \n \n \n \n \n \n\n {submitState?.error != null && (\n {submitState?.error}\n )}\n \n \n {t('login')}\n \n \n \n {t('recover_password')}\n \n \n )}\n \n \n )\n}\n\nLogin.propTypes = {\n username: PropTypes.string,\n password: PropTypes.string\n}\n\nexport default Login\n\nconst BackgroundImage = styled.img`\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -10;\n left: 0;\n top: 0;\n object-fit: cover;\n opacity: 0.3;\n background: ${({ src }) => `url(${src}) center / cover`};\n`\n\nconst Overlay = styled.div`\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -1;\n left: 0;\n top: 0;\n opacity: 0.25;\n background-color: var(--overlay-background-color);\n`\n\nconst ForgotPassword = styled(Link)`\n width: fit-content;\n margin: 1rem 0 0 auto;\n font-size: 0.875rem;\n text-decoration: underline;\n color: var(--primary-color);\n transition: opacity 0.3s ease-in-out;\n\n &:hover {\n transition: opacity 0.3s ease-in-out;\n opacity: 0.5;\n }\n`\n\nexport const Wrapper = styled.div`\n width: 100%;\n height: 100%;\n height: ${({ height }) => height};\n position: relative;\n overflow: visible;\n\n background-color: var(--backgroud-color);\n`\n\nconst StyledForm = styled.form`\n grid-column: 1/5;\n background-color: var(--white-color);\n display: flex;\n flex-direction: column;\n\n padding: 2rem;\n margin: auto 0;\n\n border: 1px solid var(--platinium-gray-color);\n box-shadow: 0 0 0.375rem 0 var(--box-shadow-black-half-opacity);\n\n ${({ theme }) => theme.smallDesktop`\n grid-column: 5/9;\n\n `}\n`\n\nconst InputWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n`\n\nconst ButtonWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: flex-end;\n display: grid;\n grid-template-columns: minmax(12.375rem, 1fr);\n`\n\nconst ErrorText = styled.p`\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n line-heihgt: 1em;\n color: var(--error-color);\n`\n\nconst Title = styled.h1`\n ${TitleStyle};\n margin-bottom: 1.5rem;\n`\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport { Link } from 'react-router-dom'\n\nimport Container from 'components/Container'\nimport StyledButton from 'components/StyledButton'\n\nimport NotFoundIllustration from 'icons/NotFoundIllustration'\n\nexport default ({ children, ...props }) => {\n const { t } = useTranslation()\n return (\n \n \n \n \n {t('notfound.title')}\n {t('notfound.message')}\n \n \n {t('back')}\n \n \n \n \n \n )\n}\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n height: ${({ height }) => height};\n position: relative;\n overflow: visible;\n\n background-color: var(--backgroud-color);\n`\n\nconst ContentWrapper = styled.div`\n grid-column: 3/10;\n margin: auto;\n\n text-align: center;\n`\n\nconst Title = styled.h1`\n color: var(--primary-color);\n font-size: 3rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1em;\n\n margin: 2.5rem auto 1rem;\n`\nconst Message = styled.p`\n color: var(--error-page-text-color);\n font-size: 1.5rem;\n letter-spacing: 0;\n line-height: 1em;\n\n margin-bottom: 3rem;\n`\n\nconst BackButton = styled(Link)`\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 15rem;\n margin: auto;\n`\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport TitleStyle from 'styled/TitleStyle'\n\nimport Breadcrumbs from '@material-ui/core/Breadcrumbs'\nimport Link from '@material-ui/core/Link'\n\nexport default ({ children, ...props }) => {\n const { t } = useTranslation()\n\n return (\n \n {props.items != null &&\n props.items.map((el, index) => (\n el.onClick() : null}\n >\n {t(el.label ?? '-')}\n \n ))}\n \n )\n}\n\nconst Wrapper = styled(Breadcrumbs)`\n & .MuiBreadcrumbs-ol {\n display: grid;\n grid-template-rows: auto auto;\n grid-template-columns: minmax(0, auto) minmax(0, auto);\n align-items: center;\n }\n\n & .MuiBreadcrumbs-li:first-of-type {\n margin-bottom: 0.5rem;\n margin: ${props => props.margin};\n\n ${({ theme }) => theme.smallDesktop`\n margin-bottom: 1rem;\n margin: ${props => props.margin};\n `}\n }\n`\n\nconst StyledLink = styled(Link)`\n &.MuiTypography-colorPrimary {\n ${TitleStyle}\n color: var(--breadcrumb-gray-color);\n\n cursor: pointer;\n grid-row: 2/3;\n\n ${props =>\n props.main &&\n css`\n font-size: 1rem;\n grid-row: 1/2;\n grid-column: 1/3;\n ${({ theme }) => theme.smallDesktop`\n font-size: 1.125rem;\n line-height: 1.3333333333em;\n `}\n `}\n }\n &.MuiLink-underlineHover:hover {\n text-decoration: underline;\n\n ${props =>\n props.onClick == null &&\n props.path === '' &&\n css`\n cursor: auto;\n &:hover {\n text-decoration: none;\n }\n `}\n }\n`\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","/**\n * StyledNotification Component\n * Please write a description\n *\n * @author Your Name \n */\nimport React from 'react'\nimport styled from 'styled-components'\nimport { toast } from 'react-toastify'\n\nimport SuccessIcon from 'icons/SuccessIcon'\nimport ErrorIcon from 'icons/ErrorIcon'\n\nexport default {\n success (msg, options) {\n const SuccessMessage = () => (\n \n \n {msg}\n \n )\n\n return toast.success(, {\n // Merge additionals options\n closeButton: false,\n ...options,\n className: 'success-toast'\n })\n },\n\n error (msg, options) {\n const ErrorMessage = () => (\n \n \n {msg}\n \n )\n return toast.error(, {\n closeButton: false,\n ...options,\n className: 'error-toast'\n })\n }\n}\n\nconst StyledMessage = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n p {\n padding: 0 0 0 1rem;\n word-break: break-word;\n width: 100%;\n }\n > * {\n flex: 0 0 auto;\n }\n`\n","import React, { memo } from 'react'\nimport styled from 'styled-components'\nimport Skeleton from '@material-ui/lab/Skeleton'\n\nconst StyledSkeleton = ({ children, ...props }) => (\n \n)\n\nexport default memo(StyledSkeleton)\n\nconst Wrapper = styled(Skeleton)`\n &.MuiSkeleton-root {\n margin: ${({ margin }) => margin};\n & + & {\n margin-top: 0.5rem;\n margin-top: ${({ marginTop }) => marginTop};\n }\n }\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nexport default ({ children, ...props }) => {\n const { element, setInDetail } = props\n const { t } = useTranslation()\n\n return (\n setInDetail(element)}>\n {element.name}\n {element.currentOccupation}%\n {element.uid}\n \n {t('table.monitoring_type')}\n \n {element.monitoringType != null\n ? t(`table.${element.monitoringType}`)\n : '-'}\n \n\n {t('table.all')}\n {element.occupation.all}\n\n {t('table.cp')}\n \n {element.occupation.cp === '0/0'\n ? '-'\n : element.occupation.cp}\n \n\n {t('table.handicapped')}\n \n {element.occupation.handicapped === '0/0'\n ? '-'\n : element.occupation.handicapped}\n \n\n {t('table.motorhome')}\n \n {element.occupation.motorhome === '0/0'\n ? '-'\n : element.occupation.motorhome}\n \n\n {t('table.irregular')}\n {element.forbiddenTransitCount30Min !== 0\n ? element.forbiddenTransitCount30Min\n : '-'}\n \n\n \n )\n}\n\nconst Wrapper = styled.div`\n background: white;\n padding: 1rem 0;\n display: grid;\n grid-template-columns: 5fr 1fr;\n grid-template-rows: auto auto auto;\n column-gap: 8px;\n\n border-bottom: 1px solid var(--breadcrumb-gray-color);\n\n color: var(--text-color);\n font-size: 0.875rem;\n letter-spacing: 0;\n line-height: 1em;\n font-family: var(--primary-font);\n`\n\nconst Name = styled.h1`\n margin-bottom: 0.25rem;\n\n font-size: 0.75rem;\n color: var(--breadcrumb-gray-color);\n`\n\nconst Uid = styled.p`\n font-size: 1.5rem;\n color: var(--primary-color);\n margin-bottom: 1rem;\n`\n\nconst Label = styled.p`\n font-weight: 700;\n font-size: 0.875rem;\n`\nconst Value = styled.p`\n font-size: 0.75rem;\n color: var(--breadcrumb-gray-color);\n text-align: right;\n`\n\nconst Occupancy = styled.p`\n font-size: 1.5rem;\n grid-column: 2/3;\n grid-row: 1/4;\n text-align: right;\n`\n","import React, { memo } from 'react'\nimport styled from 'styled-components'\n\nconst StyledMobileTable = ({ children, ...props }) => {\n const { data, template: Template, setInDetail } = props\n return (\n \n {data &&\n data.map((el, index) => (\n \n ))}\n \n )\n}\n\nexport default memo(StyledMobileTable)\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n margin-bottom: 1.5rem;\n margin: ${props => props.margin};\n`\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\nimport { BASE_API_URL, NOMINATIM_BASE_URL, NOMINATIM_OPTIONS } from 'config'\n// const SEARCH_URL = BASE_API_URL + '/areas/search/'\nconst NEWAREA_URL = BASE_API_URL + '/areas/'\nconst NOMINATIM_SEARCH_URL = NOMINATIM_BASE_URL + '/search'\n\nconst VALIDATIONS = {\n uid: [Check.isRequired],\n monitoringType: [Check.isRequired],\n capacityMargin: [Check.isRequired],\n capacity: [Check.isRequired],\n name: [Check.isRequired],\n geometry: [Check.isRequired],\n address: [],\n description: [],\n sensors: [],\n gateways: []\n}\n\nconst logic = {\n defaultValues: {\n uid: { value: null },\n monitoringType: { value: null },\n capacityMargin: { value: null },\n capacity: { value: null },\n name: { value: null },\n geometry: { value: null },\n\n address: { value: null },\n description: { value: null },\n sensors: { value: [] },\n gateways: { value: [] }\n },\n // fetchAreasOptions: options => {\n // return Promise.resolve().then(() => axios.get(SEARCH_URL, options))\n // },\n submitNewArea: (form, setForm) =>\n Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS)\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n\n const params = mapValues(form, ({ value }) => value)\n return axios.post(NEWAREA_URL, { ...params })\n }),\n fetchLocationOptions: options =>\n Promise.resolve().then(() =>\n axios.get(NOMINATIM_SEARCH_URL, {\n ...options,\n params: {\n ...options.params,\n ...NOMINATIM_OPTIONS\n }\n })\n )\n}\n\nexport default logic\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n icons/small/close-popup\n \n \n )\n}\n\nexport default SvgComponent\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport Modal from '@material-ui/core/Modal'\nimport Fade from '@material-ui/core/Fade'\n\nimport CloseIcon from 'icons/CloseIcon'\n\nexport default ({ children, ...props }) => (\n \n \n \n \n \n \n {children}\n \n \n \n)\nconst Wrapper = styled(Modal)`\n display: flex;\n align-items: center;\n justify-content: center;\n outline: none;\n`\n\nconst ModalWrapper = styled.div`\n background-color: var(--white-color);\n outline: none;\n width: 100%;\n position: relative;\n max-width: calc(100% - 2rem);\n padding: 1.5rem;\n max-height: calc(100% - 4rem);\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n\n ${({ theme }) => theme.smallDesktop`\n max-width: 38.75rem;\n padding: 2.5rem;\n`}\n`\n\nconst CloseWrapper = styled.div`\n position: absolute;\n top: 1.5rem;\n right: 1.5rem;\n cursor: pointer;\n z-index: 100;\n\n ${({ theme }) => theme.smallDesktop`\n\n top: 2.5rem;\n right: 2.5rem;\n`}\n`\n","import React, { memo } from 'react'\nimport styled, { css } from 'styled-components'\nimport isEqual from 'lodash.isequal'\n\nimport StyledSelect from 'components/StyledSelect'\n\nconst SelectAndLabel = ({ children, ...props }) => (\n \n {props.label}\n \n \n)\nexport default memo(SelectAndLabel, isEqual)\n\nconst Wrapper = styled.div`\n margin-bottom: 1.5rem;\n font-size: 0.75rem;\n ${props =>\n props.error &&\n css`\n margin-bottom: calc(1.5rem - 1.66em);\n `}\n ${props =>\n props.disabled &&\n css`\n cursor: not-allowed;\n `}\n`\n\nconst Label = styled.p`\n color: var(--breadcrumb-gray-color);\n font-size: 0.875rem;\n letter-spacing: 0;\n line-height: 1em;\n\n margin-bottom: 0.5rem;\n\n ${props =>\n props.disabled &&\n css`\n color: var(--platinium-gray-color);\n `}\n`\n","\nimport styled, { css } from 'styled-components'\n\nimport TitleStyle from 'styled/TitleStyle'\n\nexport const NewAreaWrapper = styled.div`\ndisplay: flex;\nflex-direction: column;\n`\n\nexport const SameLineInputs = styled.div`\ndisplay: grid;\ngrid-template-columns: minmax(0, 1fr);\n\n${({ theme }) => theme.smallDesktop`\ngrid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\ncolumn-gap: 1rem;\n`}\n`\n\nexport const NewAreaMapAndLabel = styled.div`\nmargin-bottom: 1.5rem;\nfont-size: 0.75rem;\n${props =>\n props.error &&\n css`\n margin-bottom: calc(1.5rem - 1.66em);\n `}\n`\nexport const NewAreaMapWrapper = styled.div`\nwidth: 100%;\nheight: 20rem;\n\n${({ theme }) => theme.smallDesktop`\nheight: 11rem;\n\n`}\n`\n\nexport const ModalTitle = styled.h2`\n${TitleStyle};\n\nmargin-bottom: 1.5rem;\n`\n\nexport const NewAreaMapHelperText = styled.p`\ncolor: var(--primary-color);\nfont-size: 0.875rem;\nfont-style: italic;\nletter-spacing: 0;\nline-height: 1em;\n\nmargin-top: 0.25rem;\n\n${props =>\n props.error &&\n css`\n color: var(--error-color);\n `}\n`\n\nexport const NewAreaButtonWrapper = styled.div`\ndisplay: grid;\ngrid-template-columns: minmax(10rem, 1fr);\n\n${({ theme }) => theme.smallDesktop`\ngrid-template-columns: minmax(12.375rem, 1fr) minmax(9rem, 1fr) minmax(\n 12.375rem,\n 1fr\n );\n`}\n`\n\nexport const Blank = styled.div`\ngrid-column: span 1;\n`\n","import React, { useCallback, memo, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport StyledModal from 'components/StyledModal'\nimport StyledButton from 'components/StyledButton'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport SelectAndLabel from 'containers/SelectAndLabel'\nimport MapContainer from 'containers/MapContainer'\n\nimport isEqual from 'lodash.isequal'\n\nimport {\n NewAreaWrapper,\n SameLineInputs,\n NewAreaMapAndLabel,\n NewAreaMapWrapper,\n ModalTitle,\n NewAreaMapHelperText,\n NewAreaButtonWrapper,\n Blank\n} from './styles'\n\nconst CreateNewAreaModal = props => {\n const {\n open,\n handleClose,\n form,\n handleChange,\n checkIfError,\n handleSubmit,\n monitoringTypeOptions,\n submitState,\n textInput,\n setTextInput,\n responsiveHandlers,\n searchOptions,\n locationSelected,\n setLocationSelected\n } = props\n\n const { t } = useTranslation()\n\n const helperTextGenerator = useCallback(\n property => {\n if (submitState.hasSubmitted && form[property] != null) {\n const apiError = checkIfError(property)\n if (apiError != null) {\n return apiError\n } else if (form[property].message) {\n return t(`errors.${form[property].message}`)\n }\n }\n return null\n },\n [submitState.hasSubmitted, form, checkIfError, t]\n )\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const onSearchChange = useCallback(event => setTextInput(event), [\n setTextInput\n ])\n const onSearchInputChange = useCallback(\n (event, newValue) => setLocationSelected(newValue),\n [setLocationSelected]\n )\n\n const getOptionLabel = useCallback(option => option.displayName, [])\n\n const mapSearchProps = useMemo(\n () => ({\n value: textInput,\n onChange: onSearchChange,\n inputValue: locationSelected,\n onInputChange: onSearchInputChange,\n options: searchOptions,\n label: t('map.search_location'),\n getOptionLabel: getOptionLabel\n }),\n [\n getOptionLabel,\n searchOptions,\n onSearchInputChange,\n locationSelected,\n onSearchChange,\n textInput,\n t\n ]\n )\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [\n locationSelected?.boundingbox?.[2],\n locationSelected?.boundingbox?.[0]\n ],\n [\n locationSelected?.boundingbox?.[3],\n locationSelected?.boundingbox?.[1]\n ]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n return (\n \n \n {t('areas.new')}\n \n \n\n \n \n \n \n \n \n \n {checkIfError('geometry') || t('map.area_helper_text')}\n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n {responsiveHandlers.isDesktop && (\n <>\n \n \n >\n )}\n \n {t('create')}\n \n \n \n \n )\n}\n\nexport default memo(CreateNewAreaModal, isEqual)\n","import React, {\n useState,\n useEffect,\n useContext,\n useRef,\n useCallback,\n useMemo,\n memo\n} from 'react'\nimport toast from 'components/StyledToast'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport get from 'lodash.get'\nimport isEqual from 'lodash.isequal'\n\nimport { useTranslation } from 'react-i18next'\n\nimport StyledTable from 'components/StyledTable'\nimport StyledSkeleton from 'components/StyledSkeleton'\nimport StyledPagination from 'components/StyledPagination'\nimport AreasTemplate from 'components/AreasTemplate'\nimport StyledMobileTable from 'components/StyledMobileTable'\n\nimport logic from './logic'\nimport CreateNewAreaModal from 'containers/CreateNewAreaModal'\n\nconst HardwareList = ({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n\n const {\n loading,\n areas,\n areasCount,\n columns,\n monitoringTypeOptions,\n setAreaInDetail,\n open,\n setOpen,\n setTitle,\n pagination,\n setPagination,\n triggerSet,\n responsiveHandlers\n } = props\n\n const { t } = useTranslation()\n\n const [form, setForm] = useState(logic.defaultValues)\n const [locationSelected, setLocationSelected] = useState(null)\n\n const [submitState, setSubmitState] = useState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n const [searchOptions, setSeachOptions] = useState([])\n const searchInputTimeoutRef = useRef(null)\n const [textInput, setTextInput] = useState('')\n\n useEffect(() => {\n if (searchInputTimeoutRef.current !== null) {\n clearTimeout(searchInputTimeoutRef.current)\n }\n searchInputTimeoutRef.current = setTimeout(() => {\n searchInputTimeoutRef.current = null\n if (logic.fetchLocationOptions) {\n logic\n .fetchLocationOptions({ params: { q: textInput } })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(data)\n } else {\n setSeachOptions([])\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions([])\n })\n }\n }, 500)\n }, [textInput])\n\n const reset = useCallback(() => {\n setForm(logic.defaultValues)\n setSubmitState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n setTextInput('')\n setSeachOptions([])\n setLocationSelected(null)\n }, [])\n\n useEffect(() => {\n setAreaInDetail(null)\n reset()\n setTitle('areas.filter_title')\n // eslint-disable-next-line\n }, [])\n\n const handleClose = useCallback(() => {\n setOpen(false)\n reset()\n }, [reset, setOpen])\n\n const checkIfError = useCallback(\n property => {\n const error = get(submitState.apiResponse, property, null)\n if (\n submitState.apiResponse != null &&\n error != null &&\n error[0] != null\n ) {\n return error[0]\n }\n return null\n },\n [submitState.apiResponse]\n )\n\n const handleChange = useCallback(\n (key, value) => {\n setForm({\n ...form,\n [key]: {\n value: value\n }\n })\n },\n [form]\n )\n\n const handleSubmit = useCallback(\n event => {\n event.preventDefault()\n setSubmitState({\n ...submitState,\n submitting: true,\n hasSubmitted: true\n })\n logic\n .submitNewArea(form, form => setForm({ ...form }))\n .then(response => {\n if (response.data) {\n handleClose()\n triggerSet()\n toast.success(t('areas.create_success'))\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n .catch(err => {\n console.log({ err })\n\n if (err == null || err.response == null) {\n actions.serverError()\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n } else {\n if (err.response.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n apiResponse: err.response.data\n }))\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n }\n toast.error(t('areas.create_error'))\n })\n },\n [actions, form, handleClose, submitState, t, triggerSet]\n )\n\n const handlePaginationChange = useCallback(\n (event, page) => setPagination({ ...pagination, offset: page }),\n [pagination, setPagination]\n )\n\n const memoizedItems = useMemo(\n () =>\n areas\n .sort((a, b) => (a.uid > b.uid ? -1 : b.uid < a.uid ? 1 : 0))\n .slice(\n (pagination.offset - 1) * pagination.limit,\n (pagination.offset - 1) * pagination.limit + pagination.limit\n )\n .map(el => ({ ...el, setAreaInDetail })),\n [areas, pagination.limit, pagination.offset, setAreaInDetail]\n )\n\n const memoizedColumns = useMemo(() => {\n return columns.map(el => ({ ...el, label: t(el.label) }))\n }, [columns, t])\n\n const memoizedLoadingTable = useMemo(\n () =>\n [...Array(6)].map((el, index) => (\n \n )),\n []\n )\n\n return (\n <>\n {loading && <>{memoizedLoadingTable}>}\n {!loading && (\n <>\n {areas != null && responsiveHandlers.isDesktop && (\n \n )}\n {areas != null && !responsiveHandlers.isDesktop && (\n \n )}\n \n >\n )}\n {open && (\n \n )}\n >\n )\n}\n\nexport default memo(withResponsive(HardwareList), isEqual)\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { useTranslation } from 'react-i18next'\n\nimport Dialog from '@material-ui/core/Dialog'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogContentText from '@material-ui/core/DialogContentText'\nimport DialogTitle from '@material-ui/core/DialogTitle'\n\nimport StyledButton from 'components/StyledButton'\n\nexport default ({ children, ...props }) => {\n const { t } = useTranslation()\n\n return (\n \n {props.title}\n {props.description != null && props.body == null && (\n \n \n {props.description}\n \n \n )}\n {props.description == null && props.body != null && (\n {props.body}\n )}\n \n {props.handleClose != null && (\n \n {props.cancelText ? props.cancelText : t('cancel')}\n \n )}\n {props.handleSubmit != null && (\n \n {props.submitText ? props.submitText : t('submit')}\n \n )}\n \n \n )\n}\n\nconst Wrapper = styled(Dialog)``\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\nimport { BASE_API_URL } from 'config'\nconst DETAILS_URL = BASE_API_URL + '/areas' // without / to better understand on axios\nconst SENSORSWITHOUTAREA_URL = BASE_API_URL + '/sensors/without_area/'\nconst GATEWAYSWITHOUTAREA_URL =\n BASE_API_URL + '/gateways/without_area/'\n\nconst VALIDATIONS = {\n uid: [Check.isRequired],\n monitoringType: [Check.isRequired],\n capacityMargin: [Check.isRequired],\n capacity: [Check.isRequired],\n name: [Check.isRequired],\n geometry: [Check.isRequired],\n address: [],\n description: [],\n sensors: [],\n gateways: []\n}\n\nconst logic = {\n defaultValues: {\n uid: { value: null },\n monitoringType: { value: null },\n capacityMargin: { value: null },\n capacity: { value: null },\n name: { value: null },\n geometry: { value: null },\n\n address: { value: null },\n description: { value: null },\n sensors: { value: [] },\n gateways: { value: [] }\n },\n getAreaDetails: id =>\n Promise.resolve().then(() => {\n return axios.get(`${DETAILS_URL}/${id}/`)\n }),\n getSensorsAndGateways: () =>\n Promise.all([\n axios.get(SENSORSWITHOUTAREA_URL),\n axios.get(GATEWAYSWITHOUTAREA_URL)\n ]),\n updateAreaDetails: (id, form, setForm) =>\n Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS)\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n setForm({ ...validation.form })\n\n const params = mapValues(form, ({ value }) => value)\n return axios.put(`${DETAILS_URL}/${id}/`, { ...params })\n }),\n deleteArea: id =>\n Promise.resolve().then(() => axios.delete(`${DETAILS_URL}/${id}/`))\n}\n\nexport default logic\n","import React, {\n useState,\n useEffect,\n useContext,\n useMemo,\n memo,\n useCallback\n} from 'react'\nimport styled, { css } from 'styled-components'\n\nimport get from 'lodash.get'\nimport isEqual from 'lodash.isequal'\n\nimport toast from 'components/StyledToast'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport { useTranslation } from 'react-i18next'\nimport { useParams } from 'react-router-dom'\n\nimport StyledButton from 'components/StyledButton'\nimport StyledDialog from 'components/StyledDialog'\nimport StyledSkeleton from 'components/StyledSkeleton'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport SelectAndLabel from 'containers/SelectAndLabel'\n\nimport logic from './logic'\n\nconst keysToMapArrays = ['sensors', 'gateways']\n\nconst AreaDetails = ({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n\n const { t } = useTranslation()\n const { id } = useParams()\n const {\n setAreaInDetail,\n areaInDetail,\n monitoringTypeOptions,\n isEditing,\n setIsEditing,\n setGeometry,\n geometry,\n setTitle,\n setMapHelperText,\n canEdit,\n fetchedArea,\n setFetchedArea,\n resetParent,\n hasCRUDPermission,\n update,\n responsiveHandlers\n } = props\n\n const [fetchedSensorsGateways, setFetchedSensorsGateways] = useState({\n sensors: [],\n gateways: []\n })\n\n const [form, setForm] = useState(logic.defaultValues)\n\n const [submitState, setSubmitState] = useState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n\n const [canDelete, setCanDelete] = useState(true)\n const [automaticGateways, setAutomaticGateways] = useState([])\n\n const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false)\n\n const handleClickOpen = useCallback(() => {\n setConfirmDeleteOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n setConfirmDeleteOpen(false)\n }, [])\n\n const reset = useCallback(() => {\n setForm(logic.defaultValues)\n setSubmitState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n resetParent()\n }, [resetParent])\n\n useEffect(() => {\n if (!isEditing && fetchedArea != null) {\n setGeometry(fetchedArea.geometry)\n }\n // eslint-disable-next-line\n }, [fetchedArea])\n\n useEffect(() => {\n if (id != null && !isNaN(Number(id))) {\n if (!isEditing) {\n setSubmitState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n resetParent()\n logic\n .getAreaDetails(id)\n .then(response => {\n if (response.data) {\n const { data } = response\n setFetchedArea(data)\n if (data.mode === 'automatic') {\n setCanDelete(false)\n }\n\n const defaultKeys = Object.keys(logic.defaultValues)\n const reduced = Object.keys(data).reduce(\n (acum, key) => {\n if (defaultKeys.includes(key)) {\n if (keysToMapArrays.includes(key)) {\n acum[key] = { value: data[key].map(el => el.id) }\n } else {\n acum[key] = { value: data[key] }\n }\n }\n return acum\n },\n { ...logic.defaultValues }\n )\n setForm(reduced)\n\n if (areaInDetail == null) {\n setAreaInDetail(data)\n }\n } else {\n reset()\n setAreaInDetail(null)\n setFetchedArea(null)\n }\n })\n .catch(err => {\n console.log({ err })\n setAreaInDetail(null)\n setFetchedArea(null)\n // ERROR\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }\n } else {\n reset()\n setAreaInDetail(null)\n setFetchedArea(null)\n }\n // eslint-disable-next-line\n }, [id, isEditing, update])\n\n useEffect(() => {\n if (fetchedArea?.id != null && !isNaN(Number(fetchedArea?.id))) {\n logic\n .getSensorsAndGateways()\n .then(response => {\n const [sensorsResults, gatewayResults] = response\n if (\n sensorsResults?.data != null &&\n gatewayResults?.data != null &&\n fetchedArea != null &&\n fetchedArea?.sensors != null &&\n fetchedArea?.gateways != null\n ) {\n setFetchedSensorsGateways({\n sensors: [...fetchedArea?.sensors, ...sensorsResults?.data],\n gateways: [...fetchedArea?.gateways, ...gatewayResults?.data]\n })\n }\n })\n .catch(err => {\n console.log({ err })\n setFetchedSensorsGateways({\n sensors: [],\n gateways: []\n })\n // ERROR\n })\n } else {\n setFetchedSensorsGateways({\n sensors: [],\n gateways: []\n })\n }\n }, [fetchedArea])\n\n const checkIfError = useCallback(\n property => {\n const error = get(submitState.apiResponse, property, null)\n if (submitState.apiResponse != null && error?.[0] != null) {\n return error?.[0]\n }\n return null\n },\n [submitState]\n )\n\n const helperTextGenerator = useCallback(\n property => {\n if (submitState.hasSubmitted && form[property] != null) {\n const apiError = checkIfError(property)\n if (apiError != null) {\n return apiError\n } else if (form?.[property]?.message) {\n return t(`errors.${form?.[property]?.message}`)\n }\n }\n return null\n },\n [checkIfError, form, submitState.hasSubmitted, t]\n )\n\n const handleChange = useCallback(\n (key, value) => {\n setForm({\n ...form,\n [key]: {\n value: value\n }\n })\n },\n [form]\n )\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const handleSensorsChange = useCallback(\n event => {\n if (\n event?.target?.value != null &&\n Array.isArray(event?.target?.value) &&\n fetchedSensorsGateways != null &&\n fetchedSensorsGateways.sensors != null\n ) {\n const foundSensors = event?.target?.value\n ?.map(sensor =>\n fetchedSensorsGateways?.sensors?.find(el => el?.id === sensor)\n )\n .filter(el => el != null)\n if (foundSensors != null) {\n const cleanedGateways =\n form?.gateways?.value?.filter(\n el => !automaticGateways?.includes(el)\n ) ?? []\n\n const gatewaysToCheck =\n foundSensors?.map(sensor => sensor?.gateway) ?? []\n setAutomaticGateways(gatewaysToCheck)\n\n const mergedGateways = gatewaysToCheck?.concat(cleanedGateways) ?? []\n\n const uniqueGateways =\n mergedGateways?.filter(\n (item, pos) => item && mergedGateways?.indexOf(item) === pos\n ) ?? []\n\n setForm({\n ...form,\n sensors: {\n value: event?.target?.value\n },\n gateways: {\n value: uniqueGateways\n }\n })\n }\n }\n },\n [automaticGateways, fetchedSensorsGateways, form]\n )\n\n useEffect(() => {\n if (isEditing) {\n handleChange('geometry', geometry)\n }\n // eslint-disable-next-line\n }, [geometry])\n\n useEffect(() => {\n if (isEditing) {\n setMapHelperText(\n \n {checkIfError('geometry') || t('map.area_edit_text')}\n \n )\n }\n // eslint-disable-next-line\n }, [form, isEditing])\n\n const handleSubmit = useCallback(\n event => {\n event.preventDefault()\n setSubmitState(submitState => ({\n ...submitState,\n hasSubmitted: true,\n submitting: true\n }))\n logic\n .updateAreaDetails(id, form, form => setForm({ ...form }))\n .then(response => {\n setIsEditing(false)\n if (response?.data) {\n setAreaInDetail(response.data)\n toast.success(t('areas.edit_success'))\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n .catch(err => {\n console.log({ err })\n toast.error(t('areas.edit_error'))\n if (err == null || err.response == null) {\n actions.serverError()\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n if (err?.response?.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n apiResponse: err.response.data\n }))\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n },\n [actions, form, id, setAreaInDetail, setIsEditing, t]\n )\n\n const handleDelete = useCallback(() => {\n logic\n .deleteArea(id)\n .then(response => {\n setAreaInDetail(null)\n toast.success(t('areas.delete_success'))\n })\n .catch(err => {\n console.log({ err })\n toast.error(t('areas.delete_error'))\n\n if (err == null || err.response == null) {\n actions.serverError()\n }\n // ERROR\n })\n .finally(() => handleClose())\n }, [actions, handleClose, id, setAreaInDetail, t])\n\n useEffect(() => {\n if (fetchedArea != null && fetchedArea.name != null) {\n setTitle(isEditing ? 'areas.edit' : 'areas.details')\n } else if (areaInDetail != null && areaInDetail.name != null) {\n setTitle(isEditing ? 'areas.edit' : 'areas.details')\n } else {\n setTitle(isEditing ? 'areas.edit' : 'areas.details')\n }\n }, [fetchedArea, areaInDetail, isEditing, setTitle, t])\n\n const memoizedLoadingTable = useMemo(\n () =>\n [...Array(9)].map((el, index) => (\n \n )),\n []\n )\n\n const memoSensors = useMemo(\n () =>\n fetchedSensorsGateways?.sensors?.map(el => ({\n value: el?.id,\n label: el?.uid ?? el.id\n })),\n [fetchedSensorsGateways]\n )\n\n const memoGateways = useMemo(\n () =>\n fetchedSensorsGateways?.gateways?.map(el => ({\n value: el.id,\n label: el.uid ?? el.id\n })),\n [fetchedSensorsGateways]\n )\n\n const handleBack = useCallback(() => {\n reset()\n setAreaInDetail(null)\n }, [reset, setAreaInDetail])\n\n const setEditingTrue = useCallback(() => {\n setIsEditing(true)\n }, [setIsEditing])\n\n const setEditingFalse = useCallback(() => {\n setIsEditing(false)\n }, [setIsEditing])\n\n return (\n <>\n \n {fetchedArea == null && <>{memoizedLoadingTable}>}\n {fetchedArea != null && (\n <>\n \n \n \n \n \n \n \n \n \n >\n )}\n \n \n {isEditing ? (\n <>\n \n {t('cancel')}\n \n {responsiveHandlers.isDesktop && (\n <>\n \n \n \n >\n )}\n \n {t('submit')}\n \n >\n ) : (\n <>\n \n {t('areas.back')}\n \n {responsiveHandlers.isDesktop && (\n <>\n \n \n >\n )}\n {hasCRUDPermission && canDelete ? (\n \n {t('areas.delete')}\n \n ) : (\n responsiveHandlers.isDesktop && \n )}\n {hasCRUDPermission && (\n \n {t('areas.edit')}\n \n )}\n >\n )}\n \n\n \n >\n )\n}\n\nexport default memo(withResponsive(AreaDetails), isEqual)\n\nconst ActionsWrapper = styled.div`\n display: grid;\n margin: 1.5rem 0 0;\n\n grid-template-columns: minmax(10rem, 1fr);\n row-gap: 1rem;\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(5, minmax(12.375rem, 1fr));\n column-gap: 1.5rem;\n margin: 2.5rem 0 0;\n\n\n ${props =>\n props.isEditing &&\n css`\n grid-template-columns: repeat(5, minmax(12.375rem, 1fr));\n `}\n`}\n`\n\nconst BlankSpace = styled.div`\n grid-column: span 1;\n`\n\nconst DetailsWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(4, minmax(0, 1fr));\n column-gap: 0.75rem;\n\n\n`}\n`\n\nconst MapHelperText = styled.p`\n color: var(--primary-color);\n font-size: 0.875rem;\n font-style: italic;\n letter-spacing: 0;\n line-height: 1em;\n\n margin: 0.5rem 0 0;\n\n ${props =>\n props.error &&\n css`\n color: var(--error-color);\n `}\n`\n","import React, { memo } from 'react'\nimport styled from 'styled-components'\nimport isEqual from 'lodash.isequal'\n\nimport TitleStyle from 'styled/TitleStyle'\n\nimport StyledModal from 'components/StyledModal'\n\nconst FiltersModal = ({ children, ...props }) => (\n \n \n {props.title}\n {props.inputs}\n {props.buttons}\n \n \n)\n\nexport default memo(FiltersModal, isEqual)\nconst Wrapper = styled.div`\n width: 100%;\n position: relative;\n`\n\nconst InputsWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n row-gap: 1rem;\n`\nconst ButtonsWrapper = styled.div`\n margin-top: 1.5rem;\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: 1rem;\n`\n\nconst Title = styled.h1`\n ${TitleStyle};\n\n margin-bottom: 1.5rem;\n`\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n )\n}\n\nexport default SvgComponent\n","import axios from 'axios'\n\nimport { BASE_API_URL, NOMINATIM_BASE_URL, NOMINATIM_OPTIONS } from 'config'\n\nconst AREAS_URL = BASE_API_URL + '/areas/detailed/'\nconst DETAILS_URL = BASE_API_URL + '/areas' // without / to better understand on axios\n\nconst SEARCH_URL = BASE_API_URL + '/areas/search/'\nconst CSV_URL = BASE_API_URL + '/areas/csv/'\n\nconst NOMINATIM_SEARCH_URL = NOMINATIM_BASE_URL + '/search'\n\nconst logic = {\n getAreas: options => {\n return Promise.resolve().then(() => {\n return axios.get(AREAS_URL, options)\n })\n },\n fetchAreasOptions: options => {\n return Promise.resolve().then(() => axios.get(SEARCH_URL, options))\n },\n fetchLocationOptions: options =>\n Promise.resolve().then(() =>\n axios.get(NOMINATIM_SEARCH_URL, {\n ...options,\n params: {\n ...options.params,\n ...NOMINATIM_OPTIONS\n }\n })\n ),\n uploadCSV: options =>\n Promise.resolve().then(() =>\n axios.post(CSV_URL, options, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n ),\n getAreaDetails: id =>\n Promise.resolve().then(() => {\n return axios.get(`${DETAILS_URL}/${id}/`)\n })\n}\n\nexport default logic\n","import React from 'react'\nimport styled from 'styled-components'\n\nconst columns = [\n {\n key: 'uid',\n label: 'table.uid',\n render: ({ setAreaInDetail, t, ...element }) => (\n setAreaInDetail(element)}>\n {element.uid}\n \n )\n },\n {\n key: 'name',\n label: 'table.name'\n },\n {\n key: 'monitoringType',\n label: 'table.monitoring_type',\n render: ({ t, ...element }) =>\n element.monitoringType != null\n ? t(`table.${element.monitoringType}`)\n : '-'\n },\n {\n key: 'currentOccupation',\n label: 'table.occupancy_rate'\n },\n {\n key: 'occupation.all',\n label: 'table.all'\n },\n {\n key: 'occupation.cp',\n label: 'table.cp',\n render: ({ t, ...element }) =>\n element.occupation.cp === '0/0'\n ? '-'\n : element.occupation.cp\n },\n {\n key: 'occupation.handicapped',\n label: 'table.handicapped',\n render: ({ t, ...element }) =>\n element.occupation.handicapped === '0/0'\n ? '-'\n : element.occupation.handicapped\n },\n\n {\n key: 'occupation.motorhome',\n label: 'table.motorhome',\n render: ({ t, ...element }) =>\n element.occupation.motorhome === '0/0'\n ? '-'\n : element.occupation.motorhome\n },\n\n {\n key: 'forbiddenTransitCount30Min',\n label: 'table.irregular',\n render: ({ t, ...element }) =>\n element.forbiddenTransitCount30Min != null\n ? element.forbiddenTransitCount30Min\n : '-'\n }\n]\n\nexport default columns\n\nconst StyledLink = styled.span`\n color: var(--primary-color);\n cursor: pointer;\n &:hover {\n text-decoration: underline;\n }\n`\n","export const typeOptions = [\n {\n label: 'all_filter',\n value: ''\n },\n {\n label: 'sensor',\n value: 'sensor'\n },\n {\n label: 'gateway',\n value: 'gateway'\n },\n {\n label: 'panel',\n value: 'panel'\n },\n {\n label: 'repeater',\n value: 'signal_repeater'\n },\n {\n label: 'panel_monitoring_equipment',\n value: 'panel_monitoring_equipment'\n }\n]\n\nexport const countingTypeOptions = [\n {\n label: 'video_feed',\n value: 'video_feed'\n },\n {\n label: 'counting_sensor',\n value: 'counting_sensor'\n },\n {\n label: 'individual_sensor',\n value: 'individual_sensor'\n }\n]\n\nexport const statusOptions = [\n {\n label: 'all_filter',\n value: ''\n },\n {\n label: 'ok',\n value: 'ok'\n },\n {\n label: 'not_ok',\n value: 'not_ok'\n },\n {\n label: 'unknown',\n value: 'unknown'\n }\n]\n\nexport const allowedOptions = [\n {\n value: true,\n label: 'true'\n },\n {\n value: false,\n label: 'false'\n }\n]\n\nexport const monitoringOptions = [\n {\n label: 'individual_sensor',\n value: 'individual_sensor'\n },\n {\n label: 'video_feed',\n value: 'video_feed'\n },\n {\n label: 'counting_sensor',\n value: 'counting_sensor'\n }\n]\n\nexport const gatewaysTypeOptions = [\n {\n label: 'configuration',\n value: 'configuration'\n },\n {\n label: 'communication',\n value: 'communication'\n }\n]\n\nexport const monitoringTypeOptions = [\n {\n label: 'individual_counting',\n value: 'individual_counting'\n },\n {\n label: 'global_counting',\n value: 'global_counting'\n },\n {\n label: 'global_with_reserved_counting',\n value: 'global_with_reserved_counting'\n }\n]\n\nexport const intervalOptions = [\n {\n value: 'day',\n label: 'day'\n },\n {\n value: 'month',\n label: 'month'\n },\n {\n value: 'year',\n label: 'year'\n }\n]\n\nexport const occupiedSearchOptions = [\n {\n label: 'all_filter',\n value: ''\n },\n {\n label: 'occupied',\n value: 'true'\n },\n {\n label: 'free',\n value: 'false'\n }\n]\n\nexport const occupiedOptions = [\n {\n label: 'true',\n value: 'true'\n },\n {\n label: 'false',\n value: 'false'\n }\n]\n\nexport const occupationOptions = [\n {\n label: 'all_filter',\n value: ''\n },\n {\n label: 'low',\n value: 'low'\n },\n {\n label: 'medium',\n value: 'medium'\n },\n {\n label: 'high',\n value: 'high'\n },\n {\n label: 'full',\n value: 'full'\n },\n {\n label: 'maxed_out',\n value: 'maxed_out'\n }\n]\n","import { CRUD_PERMISSIONS_GROUP } from 'config'\n\nexport default user => {\n if (user != null && user.groups != null && Array.isArray(user.groups)) {\n const found = user.groups.find(el => el === CRUD_PERMISSIONS_GROUP)\n return found != null\n }\n return false\n}\n","import React, {\n useEffect,\n useState,\n useRef,\n useContext,\n useMemo,\n memo,\n useCallback\n} from 'react'\nimport styled from 'styled-components'\nimport { AUTOMATIC_EDIT_PERMISSIONS } from 'config'\n\nimport Badge from '@material-ui/core/Badge'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport { Context as SocketContext } from 'providers/SocketProvider/socketProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport { useTranslation } from 'react-i18next'\nimport {\n useHistory,\n useRouteMatch,\n Route,\n Switch,\n Redirect\n} from 'react-router-dom'\n\nimport StyledButton from 'components/StyledButton'\nimport StyledBreadCrumb from 'components/StyledBreadCrumb'\nimport StyledAutoComplete from 'components/StyledAutoComplete'\nimport StyledSelect from 'components/StyledSelect'\nimport toast from 'components/StyledToast'\n\nimport MapContainer from 'containers/MapContainer'\nimport AreaList from 'containers/AreaList'\nimport AreaDetails from 'containers/AreaDetails'\nimport FiltersModal from 'containers/FiltersModal'\n\nimport UploadIcon from 'icons/UploadIcon'\nimport FilterIcon from 'icons/FilterIcon'\n\nimport logic from './logic'\nimport columns from './columns'\n\nimport { monitoringTypeOptions, occupationOptions } from 'utils/options'\n\nimport hasCRUDPermissions from 'utils/hasCRUDPermissions'\n\nconst Areas = ({ children, ...props }) => {\n const { responsiveHandlers } = props\n\n const { actions, store } = useContext(AuthContext)\n const { store: wsStore } = useContext(SocketContext)\n\n const { t } = useTranslation()\n const { path } = useRouteMatch()\n\n const history = useHistory()\n\n const [loading, setLoading] = useState(true)\n const [isEditing, setIsEditing] = useState(false)\n const [open, setOpen] = useState(false)\n const [geometry, setGeometry] = useState(null)\n const [areaState, setAreaState] = useState({\n areasCount: 0,\n areas: []\n })\n const [filters, setFilters] = useState({\n monitoring_type: '',\n name: '',\n verboseOccupation: '',\n uid: ''\n })\n const [pagination, setPagination] = useState({ offset: 1, limit: 10 })\n const [triggerSet, setTriggerSet] = useState(false)\n\n const nameInputTimeoutRef = useRef(null)\n const uidInputTimeoutRef = useRef(null)\n\n const [searchOptions, setSeachOptions] = useState({\n name: [],\n uid: []\n })\n const [textInput, setTextInput] = useState({\n name: '',\n uid: ''\n })\n\n const [areaInDetail, setAreaInDetail] = useState(null)\n const [update, setUpdate] = useState(false)\n\n const [mapHelperText, setMapHelperText] = useState(null)\n const [fetchedArea, setFetchedArea] = useState(null)\n\n const [title, setTitle] = useState('')\n\n const locationInputTimeoutRef = useRef(null)\n const [locationOptions, setLocationOptions] = useState([])\n const [locationTextInput, setLocationTextInput] = useState('')\n const [locationSelected, setLocationSelected] = useState(null)\n\n const hiddenFileInput = useRef(null)\n\n const [submitState, setSubmitState] = useState({\n submitting: false,\n hasSubmitted: false\n })\n\n const [openFilters, setOpenFilters] = useState(false)\n\n const onFilterChange = useCallback(\n (key, value) => {\n setFilters({\n ...filters,\n [key]: value\n })\n },\n [filters]\n )\n\n const handleAutocompleteInputs = useCallback(\n (property, value) => {\n setTextInput({\n ...textInput,\n [property]: value\n })\n onFilterChange(property, value)\n },\n [textInput, onFilterChange]\n )\n\n useEffect(() => {\n if (locationInputTimeoutRef.current !== null) {\n clearTimeout(locationInputTimeoutRef.current)\n }\n locationInputTimeoutRef.current = setTimeout(() => {\n locationInputTimeoutRef.current = null\n if (logic.fetchLocationOptions) {\n logic\n .fetchLocationOptions({\n params: { q: locationTextInput, format: 'jsonv2' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setLocationOptions(data)\n } else {\n setLocationOptions([])\n }\n })\n .catch(err => {\n console.log({ err })\n setLocationOptions([])\n })\n }\n }, 500)\n // eslint-disable-next-line\n }, [locationTextInput])\n\n const handleSetAreaInDetail = useCallback(\n area => {\n if (area != null && area.id != null) {\n setAreaInDetail(area)\n history.push(`${path}${area.id}/`)\n } else {\n setAreaInDetail(null)\n setFetchedArea(null)\n setIsEditing(false)\n setTriggerSet(true)\n history.push(`${path}`)\n }\n },\n [history, path]\n )\n\n const resetParent = useCallback(() => {\n setLocationTextInput('')\n setLocationSelected(null)\n setLocationOptions([])\n }, [])\n\n useEffect(() => {\n if (nameInputTimeoutRef.current !== null) {\n clearTimeout(nameInputTimeoutRef.current)\n }\n\n nameInputTimeoutRef.current = setTimeout(() => {\n nameInputTimeoutRef.current = null\n logic\n .fetchAreasOptions({\n params: { name: textInput.name !== '' ? textInput.name : 'all' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(searchOptions => ({\n ...searchOptions,\n name: data.results\n }))\n } else {\n setSeachOptions(searchOptions => ({ ...searchOptions, name: [] }))\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions(searchOptions => ({ ...searchOptions, name: [] }))\n })\n }, 500)\n }, [textInput.name])\n\n useEffect(() => {\n if (uidInputTimeoutRef.current !== null) {\n clearTimeout(uidInputTimeoutRef.current)\n }\n\n uidInputTimeoutRef.current = setTimeout(() => {\n uidInputTimeoutRef.current = null\n logic\n .fetchAreasOptions({\n params: { uid: textInput.uid !== '' ? textInput.uid : 'all' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(searchOptions => ({\n ...searchOptions,\n uid: data.results\n }))\n } else {\n setSeachOptions(searchOptions => ({ ...searchOptions, uid: [] }))\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions(searchOptions => ({ ...searchOptions, uid: [] }))\n })\n }, 500)\n }, [textInput.uid])\n\n const fetchAreaAndUpdate = useCallback(\n id => {\n logic.getAreaDetails(id).then(response => {\n if (response.data) {\n const { data } = response\n const areasCopy = JSON.parse(JSON.stringify(areaState.areas))\n const found = areasCopy.findIndex(el => el.id === id)\n if (found >= 0) {\n areasCopy[found] = data\n setAreaState({\n ...areaState,\n areas: areasCopy\n })\n }\n }\n })\n },\n [areaState]\n )\n\n const fetchAreas = useCallback(() => {\n setLoading(true)\n setTriggerSet(false)\n logic\n .getAreas({\n params: {\n ...{\n limit: 'max'\n },\n ...filters\n }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setAreaState({\n areasCount: data.count,\n areas: data.results\n })\n } else {\n setAreaState({ areasCount: 0, areas: [] })\n }\n setLoading(false)\n })\n .catch(err => {\n console.log({ err })\n setAreaState({ areasCount: 0, areas: [] })\n setLoading(false)\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }, [actions, filters])\n\n const canEdit = useCallback(\n property => {\n if (areaInDetail != null && areaInDetail.mode === 'automatic') {\n return AUTOMATIC_EDIT_PERMISSIONS.area.includes(property)\n }\n return true\n },\n [areaInDetail]\n )\n\n const resetFilters = useCallback(() => {\n setFilters({\n monitoring_type: '',\n name: '',\n verboseOccupation: '',\n uid: ''\n })\n setTextInput({ uid: '', name: '' })\n setTriggerSet(true)\n }, [])\n\n useEffect(() => {\n if (areaInDetail == null) {\n fetchAreas()\n setPagination({ offset: 1, limit: 10 })\n }\n // eslint-disable-next-line\n }, [triggerSet])\n\n const handleClick = useCallback(event => {\n if (hiddenFileInput != null && hiddenFileInput.current != null) {\n hiddenFileInput.current.click()\n }\n }, [])\n\n const handleChange = useCallback(\n async event => {\n const fileUploaded = await event.target.files[0]\n\n if (fileUploaded != null) {\n setSubmitState({\n submitting: true,\n hasSubmitted: true\n })\n setLoading(true)\n // eslint-disable-next-line\n const formData = new FormData()\n\n formData.append('file', fileUploaded)\n await logic\n .uploadCSV(formData)\n .then(response => {\n setSubmitState({\n ...submitState,\n submitting: false\n })\n if (response.status === 200) {\n toast.success(t('areas.create_success'))\n }\n })\n .catch(err => {\n console.log({ err })\n setSubmitState({\n ...submitState,\n submitting: false\n })\n\n toast.error(t('areas.create_error'))\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n .finally(() => setTriggerSet(true))\n }\n },\n [actions, submitState, t]\n )\n\n const handleWSMessages = useCallback(\n msg => {\n if (\n msg != null &&\n (msg.sender === 'area' || msg.sender === 'areaevent')\n ) {\n if (areaInDetail && msg.content.id === areaInDetail.id) {\n if (msg.type === 'update') {\n setUpdate(!update)\n } else if (msg.type === 'delete' && msg.content != null) {\n setAreaInDetail(null)\n }\n } else if (areaInDetail == null) {\n if (msg.type === 'new' || msg.type === 'delete') {\n fetchAreas()\n } else if (msg.type === 'update' && msg?.content?.id) {\n fetchAreaAndUpdate(msg?.content?.id)\n } else {\n fetchAreas()\n }\n }\n }\n },\n [areaInDetail, fetchAreaAndUpdate, fetchAreas, update]\n )\n\n useEffect(() => {\n if (wsStore.message != null) {\n handleWSMessages(wsStore.message)\n }\n }, [wsStore.message, handleWSMessages])\n\n const hasCRUDPermission = useMemo(() => hasCRUDPermissions(store.user), [\n store.user\n ])\n\n const memoMonitoringOptions = useMemo(\n () =>\n monitoringTypeOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })),\n [t]\n )\n\n const memoHandleAutocompleteInputs = useCallback(\n name => e => handleAutocompleteInputs(name, e),\n [handleAutocompleteInputs]\n )\n const memoHandleAutocompleteInputsValue = useCallback(\n name => e => handleAutocompleteInputs(name, e.target.value),\n [handleAutocompleteInputs]\n )\n\n const memoOnFilterChange = useCallback(\n name => (e, newValue) => onFilterChange(name, newValue),\n [onFilterChange]\n )\n\n const memoFilterMonitoringOptions = useMemo(\n () => [\n {\n label: t('table.all_filter'),\n value: ''\n },\n ...memoMonitoringOptions\n ],\n [memoMonitoringOptions, t]\n )\n\n const memoOccupationOptions = useMemo(\n () =>\n occupationOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })),\n [t]\n )\n\n const filtersInputs = useMemo(\n () => (\n \n \n \n\n \n \n \n ),\n [\n t,\n filters.uid,\n filters.name,\n filters.verboseOccupation,\n filters.monitoring_type,\n searchOptions.name,\n searchOptions.uid,\n textInput.name,\n textInput.uid,\n memoHandleAutocompleteInputs,\n memoHandleAutocompleteInputsValue,\n memoOnFilterChange,\n memoFilterMonitoringOptions,\n memoOccupationOptions\n ]\n )\n\n const handleResetFilters = useCallback(() => {\n resetFilters()\n setOpenFilters(false)\n }, [resetFilters])\n\n const applyFilters = useCallback(() => {\n setTriggerSet(true)\n setOpenFilters(false)\n }, [])\n\n const filtersButtons = useMemo(\n () => (\n \n \n {t('table.reset')}\n \n \n {t('table.apply')}\n \n \n ),\n [handleResetFilters, applyFilters, submitState.submitting, t]\n )\n\n const resetAreaInDetail = useCallback(() => {\n handleSetAreaInDetail(null)\n }, [handleSetAreaInDetail])\n\n const breadcrumbItems = useMemo(\n () => [\n {\n path: path,\n label: 'sections.areas',\n onClick: resetAreaInDetail\n },\n {\n path: '',\n label: `${t(title)} ${\n areaInDetail?.name ? `- ${areaInDetail?.name}` : ''\n }`\n }\n ],\n [path, title, resetAreaInDetail, t, areaInDetail?.name]\n )\n\n const openNewPopup = useCallback(() => setOpen(true), [])\n\n const mapData = useMemo(\n () =>\n areaInDetail != null && fetchedArea != null\n ? fetchedArea.geometry != null\n ? [fetchedArea]\n : null\n : areaState.areas,\n [areaInDetail, fetchedArea, areaState.areas]\n )\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [locationSelected.boundingbox[2], locationSelected.boundingbox[0]],\n [locationSelected.boundingbox[3], locationSelected.boundingbox[1]]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n const onSearchChange = useCallback(event => setLocationTextInput(event), [])\n const onSearchInputChange = useCallback(\n (event, newValue) => setLocationSelected(newValue),\n []\n )\n\n const getOptionLabel = useCallback(option => option.displayName, [])\n\n const mapSearchProps = useMemo(\n () => ({\n value: locationTextInput,\n onChange: onSearchChange,\n inputValue: locationSelected,\n onInputChange: onSearchInputChange,\n options: locationOptions,\n label: t('map.search_location'),\n getOptionLabel: getOptionLabel\n }),\n [\n locationTextInput,\n locationSelected,\n getOptionLabel,\n locationOptions,\n onSearchChange,\n onSearchInputChange,\n t\n ]\n )\n\n const showSpots = useMemo(() => areaInDetail != null && fetchedArea != null, [\n areaInDetail,\n fetchedArea\n ])\n const isDrawAvailable = useMemo(() => isEditing && canEdit('geometry'), [\n isEditing,\n canEdit\n ])\n\n const memoSetTriggerSet = useCallback(() => setTriggerSet(true), [])\n\n const onCloseFilters = useCallback(() => setOpenFilters(false), [])\n const onOpenFilters = useCallback(() => setOpenFilters(true), [])\n\n return (\n \n \n \n {areaInDetail == null && hasCRUDPermission && (\n \n \n {t('areas.new')}\n \n \n \n \n \n {!responsiveHandlers.isDesktop && (\n \n \n \n \n \n )}\n \n )}\n \n {areaInDetail == null && responsiveHandlers.isDesktop && (\n \n {[filtersInputs, filtersButtons]}\n \n )}\n \n \n \n \n {isDrawAvailable && <>{mapHelperText}>}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default memo(withResponsive(Areas))\n\nconst Wrapper = styled.div`\n padding: 1.5rem;\n display: flex;\n flex-direction: column;\n overflow-y: scroll;\n height: 100%;\n\n ${({ theme }) => theme.smallDesktop`\n padding: 1.5rem 2rem;\n `}\n`\n\nconst MapWrapper = styled.div`\n width: 100%;\n min-height: 22rem;\n height: 100%;\n`\n\nconst MapAndTextWrapper = styled.div`\n margin: 1.5rem 0;\n /* height: calc(22rem + 0.875rem + 0.5rem); */\n /* 100vh - navbar - wrapper_padding - breadcrumb_height - filters_height+margin - this.margin - table_maxheight - pagination */\n min-height: 22rem;\n\n height: calc(\n 100vh - 3.75rem - 4rem - 4.125rem - 4rem - 3rem - 25rem - 3.75rem\n );\n flex: 0 0 auto;\n`\n\nconst BreadCrumbRow = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n row-gap: 1rem;\n flex: 0 0 auto;\n\n ${({ theme }) => theme.smallDesktop`\n display: flex;\n justify-content: space-between;\n align-items: center;\n min-height: 2.5rem;\n `}\n`\nconst ButtonWrapper = styled.div`\n display: grid;\n grid-template-columns: 10rem 2.5rem 2.5rem;\n column-gap: 0.5rem;\n margin-right: auto;\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: 14.625rem 2.5rem;\n column-gap: 0.5rem;\n margin: 0;\n `}\n`\n\nconst FiltersWrapper = styled.div`\n margin: 1.5rem 0 0rem;\n`\n\nconst FiltersRow = styled.div`\n display: none;\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));\n display: grid;\n column-gap: 1rem;\n row-gap: 1rem;\n\n `}\n`\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport Menu from '@material-ui/core/Menu'\nimport MenuItem from '@material-ui/core/MenuItem'\n\nexport default ({ children, ...props }) => {\n const { onClick, ...remain } = props\n return (\n \n {props.options.map((option, index) => (\n props.onClick(option.value)}\n >\n {option.label ?? '-'}\n \n ))}\n \n )\n}\n\nconst Wrapper = styled(Menu)``\n\nconst StyledMenuItem = styled(MenuItem)``\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\n\nimport { BASE_API_URL, NOMINATIM_BASE_URL, NOMINATIM_OPTIONS } from 'config'\n\nconst NEWASSET_URL = {\n sensor: BASE_API_URL + '/sensors/',\n gateway: BASE_API_URL + '/gateways/',\n panel: BASE_API_URL + '/panels/',\n repeater: BASE_API_URL + '/repeaters/'\n}\n\nconst NOMINATIM_SEARCH_URL = NOMINATIM_BASE_URL + '/search'\n\nexport const types = ['sensor', 'gateway', 'panel', 'repeater']\n\nexport const STEP_VALIDATIONS = {\n sensor: {\n info_sensor: {\n name: [],\n geometry: [Check.isRequired],\n uid: [Check.isRequired],\n factoryUid: [Check.isRequired],\n // number: [Check.isRequired],\n magnetometerThreshold: [Check.isRequired]\n },\n submit_sensor: {\n description: [],\n monitoringType: [Check.isRequired],\n distanceThreshold: [Check.isRequired],\n area: [],\n gateway: [],\n allowed: [Check.isRequired],\n softwareVersion: []\n }\n },\n gateway: {\n submit_gateways: {\n uid: [],\n area: [],\n name: [],\n // networkKey: [],\n sensors: []\n }\n },\n panel: {\n submit_panels: {\n uid: [Check.isRequired],\n area: [Check.isRequired],\n name: [Check.isRequired],\n geometry: [Check.isRequired]\n }\n },\n repeater: {\n submit_repeater: {\n uid: [Check.isRequired],\n area: [Check.isRequired],\n name: [Check.isRequired],\n geometry: [Check.isRequired],\n factoryUid: [Check.isRequired]\n\n }\n }\n}\n\nconst VALIDATIONS = {\n sensor: {\n uid: [Check.isRequired],\n factoryUid: [Check.isRequired],\n area: [],\n description: [],\n gateway: [],\n geometry: [Check.isRequired],\n monitoringType: [Check.isRequired],\n name: [],\n // number: [Check.isRequired],\n magnetometerThreshold: [Check.isRequired],\n distanceThreshold: [Check.isRequired],\n allowed: [Check.isRequired],\n softwareVersion: []\n },\n gateway: {\n uid: [Check.isRequired],\n factoryUid: [Check.isRequired],\n geometry: [Check.isRequired],\n area: [],\n name: [],\n // networkKey: [],\n type: [Check.isRequired]\n },\n repeater: {\n uid: [Check.isRequired],\n area: [Check.isRequired],\n name: [Check.isRequired],\n geometry: [Check.isRequired],\n factoryUid: [Check.isRequired]\n\n },\n panel: {\n uid: [Check.isRequired],\n area: [Check.isRequired],\n name: [Check.isRequired],\n lastValue: [Check.isRequired],\n lastSeen: [Check.isRequired],\n geometry: [Check.isRequired]\n }\n}\n\nconst logic = {\n defaultValues: {\n sensor: {\n uid: { value: null },\n factoryUid: { value: null },\n area: { value: null },\n description: { value: null },\n gateway: { value: null },\n geometry: { value: null },\n monitoringType: { value: null },\n name: { value: null },\n // number: { value: null },\n magnetometerThreshold: { value: null },\n distanceThreshold: { value: null },\n allowed: { value: true },\n softwareVersion: { value: null }\n },\n gateway: {\n uid: { value: null },\n factoryUid: { value: null },\n area: { value: null },\n name: { value: null },\n // networkKey: { value: null },\n type: { value: null },\n geometry: { value: null }\n },\n panel: {\n uid: { value: null },\n area: { value: null },\n name: { value: null },\n lastValue: { value: null },\n lastSeen: { value: null },\n geometry: { value: null }\n },\n repeater: {\n uid: { value: null },\n area: { value: null },\n name: { value: null },\n geometry: { value: null },\n factoryUid: { value: null }\n }\n },\n submitNewHardware: (type, form, setForm) =>\n Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS[type])\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n\n const params = mapValues(form, ({ value }) => value)\n return axios.post(NEWASSET_URL[type], { ...params })\n }),\n validateStepForm: (type, step, form, setForm) =>\n Promise.resolve().then(() => {\n if (type != null && step != null && form != null) {\n const validation = Check.checkValidation(\n form,\n STEP_VALIDATIONS[type][step]\n )\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n return true\n } else {\n throw new ValidationError()\n }\n }),\n fetchLocationOptions: options =>\n Promise.resolve().then(() =>\n axios.get(NOMINATIM_SEARCH_URL, {\n ...options,\n params: {\n ...options.params,\n ...NOMINATIM_OPTIONS\n }\n })\n )\n}\n\nexport default logic\n","export const stepsByType = {\n sensor: ['type', 'info_sensor', 'submit_sensor'],\n gateway: ['type', 'submit_gateways'],\n panel: ['type', 'submit_panels'],\n repeater: ['type', 'submit_repeater']\n}\n","import React, { memo } from 'react'\nimport Radio from '@material-ui/core/Radio'\nimport RadioGroup from '@material-ui/core/RadioGroup'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport FormControl from '@material-ui/core/FormControl'\nimport FormLabel from '@material-ui/core/FormLabel'\nimport FormHelperText from '@material-ui/core/FormHelperText'\n\nexport default memo(({ children, ...props }) => (\n \n {props.label}\n \n {props.options != null\n ? props.options.map((el, index) => (\n }\n label={el.label ?? el.value}\n />\n ))\n : []}\n \n {props.errorMessage}\n \n))\n","import React from 'react'\nimport styled from 'styled-components'\nimport MobileStepper from '@material-ui/core/MobileStepper'\n\nexport default ({ children, ...props }) => (\n \n)\n\nconst Wrapper = styled(MobileStepper)`\n &.MuiMobileStepper-root {\n margin-top: 1rem;\n background: transparent;\n padding: 0;\n\n }\n\n & .MuiMobileStepper-dots{\n width: 100%;\n justify-content: center;\n }\n \n`\n","import styled, { css } from 'styled-components'\nimport TitleStyle from 'styled/TitleStyle'\n\nexport const Wrapper = styled.div`\n width: 100%;\n`\n\nexport const ModalTitle = styled.h2`\n ${TitleStyle};\n\n margin-bottom: 0.25rem;\n`\n\nexport const ModalSubTitle = styled.h4`\n margin-bottom: 1.5rem;\n\n color: var(--breadcrumb-gray-color);\n font-size: 1.125rem;\n letter-spacing: 0;\n line-height: 1.3333333333em;\n`\n\nexport const SameLineInputs = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n column-gap: 1rem;\n`}\n`\n\nexport const MapHelperText = styled.p`\n color: var(--primary-color);\n font-size: 0.875rem;\n font-style: italic;\n letter-spacing: 0;\n line-height: 1em;\n\n margin-top: 0.25rem;\n\n ${props =>\n props.error &&\n css`\n color: var(--error-color);\n `}\n`\n\nexport const MapAndLabel = styled.div`\n margin-bottom: 1.5rem;\n font-size: 0.75rem;\n ${props =>\n props.error &&\n css`\n margin-bottom: calc(1.5rem - 1.66em);\n `}\n`\nexport const MapWrapper = styled.div`\n width: 100%;\n height: 20rem;\n\n ${({ theme }) => theme.smallDesktop`\n height: 11rem;\n\n`}\n`\n","import React, { memo, useCallback, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport isEqual from 'lodash.isequal'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport MapContainer from 'containers/MapContainer'\n\nimport {\n SameLineInputs,\n MapHelperText,\n MapAndLabel,\n MapWrapper\n} from '../styles'\n\nconst InfoSensor = ({\n form,\n hasSubmitted,\n locationSelected,\n textInput,\n searchOptions,\n handleChange,\n checkIfError,\n helperTextGenerator,\n setTextInput,\n setLocationSelected,\n mapSearchProps\n}) => {\n const { t } = useTranslation()\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [\n locationSelected?.boundingbox?.[2],\n locationSelected?.boundingbox?.[0]\n ],\n [\n locationSelected?.boundingbox?.[3],\n locationSelected?.boundingbox?.[1]\n ]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n return (\n <>\n \n \n \n \n \n \n \n \n {checkIfError('geometry') || t('map.asset_helper_text')}\n \n \n\n \n \n \n \n\n \n \n \n >\n )\n}\n\nexport default memo(InfoSensor, isEqual)\n","import React, { useCallback, useMemo, memo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport isEqual from 'lodash.isequal'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport SelectAndLabel from 'containers/SelectAndLabel'\n\nimport { SameLineInputs } from '../styles'\n\nconst SubmitSensor = ({\n form,\n areas,\n monitoringOptions,\n filteredGateways,\n allowedOptions,\n hasSubmitted,\n handleChange,\n checkIfError,\n helperTextGenerator\n}) => {\n const { t } = useTranslation()\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const memoAreasOptions = useMemo(\n () =>\n areas\n ? [\n { value: '', label: t('table.remove') },\n ...areas.map(el => ({\n value: el.id,\n label: el.name ?? el.id\n }))\n ]\n : [],\n [areas, t]\n )\n\n const memoMonitoringOptions = useMemo(\n () =>\n monitoringOptions?.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })) ?? [],\n [monitoringOptions, t]\n )\n\n const memoFilteredGateways = useMemo(\n () =>\n filteredGateways != null\n ? [\n { value: '', label: t('table.remove') },\n ...filteredGateways.map(el => ({\n value: el.id,\n label: el.uid ?? el.id\n }))\n ]\n : [],\n [filteredGateways, t]\n )\n\n const memoAllowedOptions = useMemo(\n () =>\n allowedOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })),\n [allowedOptions, t]\n )\n\n return (\n <>\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n >\n )\n}\n\nexport default memo(SubmitSensor, isEqual)\n","import React, { useCallback, useMemo, memo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport isEqual from 'lodash.isequal'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport MapContainer from 'containers/MapContainer'\nimport SelectAndLabel from 'containers/SelectAndLabel'\n\nimport {\n SameLineInputs,\n MapHelperText,\n MapAndLabel,\n MapWrapper\n} from '../styles'\n\nconst SubmitGateways = ({\n form,\n hasSubmitted,\n locationSelected,\n textInput,\n searchOptions,\n areas,\n gatewaysTypeOptions,\n handleChange,\n checkIfError,\n helperTextGenerator,\n setTextInput,\n setLocationSelected,\n mapSearchProps\n}) => {\n const { t } = useTranslation()\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const memoAreasOptions = useMemo(\n () =>\n areas\n ? [\n { value: '', label: t('table.remove') },\n ...areas.map(el => ({\n value: el.id,\n label: el.name ?? el.id\n }))\n ]\n : [],\n [areas, t]\n )\n\n const memoGatewaysTypeOptions = useMemo(\n () =>\n gatewaysTypeOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })),\n [gatewaysTypeOptions, t]\n )\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [\n locationSelected?.boundingbox?.[2],\n locationSelected?.boundingbox?.[0]\n ],\n [\n locationSelected?.boundingbox?.[3],\n locationSelected?.boundingbox?.[1]\n ]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {checkIfError('geometry') || t('map.asset_helper_text')}\n \n \n \n \n \n \n \n \n \n >\n )\n}\n\nexport default memo(SubmitGateways, isEqual)\n","import React, { useCallback, useMemo, memo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport isEqual from 'lodash.isequal'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport MapContainer from 'containers/MapContainer'\nimport SelectAndLabel from 'containers/SelectAndLabel'\n\nimport {\n SameLineInputs,\n MapHelperText,\n MapAndLabel,\n MapWrapper\n} from '../styles'\n\nconst SubmitPanels = ({\n form,\n hasSubmitted,\n locationSelected,\n textInput,\n searchOptions,\n areas,\n handleChange,\n checkIfError,\n helperTextGenerator,\n setTextInput,\n setLocationSelected,\n mapSearchProps\n}) => {\n const { t } = useTranslation()\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const memoAreasOptions = useMemo(\n () =>\n areas\n ? [\n ...areas.map(el => ({\n value: el.id,\n label: el.name ?? el.id\n }))\n ]\n : [],\n [areas]\n )\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [\n locationSelected?.boundingbox?.[2],\n locationSelected?.boundingbox?.[0]\n ],\n [\n locationSelected?.boundingbox?.[3],\n locationSelected?.boundingbox?.[1]\n ]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {checkIfError('geometry') || t('map.asset_helper_text')}\n \n \n \n \n \n >\n )\n}\n\nexport default memo(SubmitPanels, isEqual)\n","import React, { useCallback, useMemo, memo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport isEqual from 'lodash.isequal'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport MapContainer from 'containers/MapContainer'\nimport SelectAndLabel from 'containers/SelectAndLabel'\n\nimport {\n SameLineInputs,\n MapHelperText,\n MapAndLabel,\n MapWrapper\n} from '../styles'\n\nconst SubmitRepeater = ({\n form,\n hasSubmitted,\n locationSelected,\n textInput,\n searchOptions,\n areas,\n handleChange,\n checkIfError,\n helperTextGenerator,\n setTextInput,\n setLocationSelected,\n mapSearchProps\n}) => {\n const { t } = useTranslation()\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const memoAreasOptions = useMemo(\n () => [\n { value: '', label: t('table.remove') },\n ...areas.map(el => ({\n value: el.id,\n label: el.name ?? el.id\n }))\n ],\n [areas, t]\n )\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [\n locationSelected?.boundingbox?.[2],\n locationSelected?.boundingbox?.[0]\n ],\n [\n locationSelected?.boundingbox?.[3],\n locationSelected?.boundingbox?.[1]\n ]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {checkIfError('geometry') || t('map.asset_helper_text')}\n \n \n \n \n \n \n >\n )\n}\n\nexport default memo(SubmitRepeater, isEqual)\n","import React, {\n useState,\n useEffect,\n useRef,\n memo,\n useCallback,\n useMemo\n} from 'react'\n\nimport { useTranslation } from 'react-i18next'\n\nimport StyledModal from 'components/StyledModal'\nimport StyledRadio from 'components/StyledRadio'\nimport StyledButton from 'components/StyledButton'\nimport StyledDotsStepper from 'components/StyledDotsStepper'\n\nimport { Wrapper, ModalTitle, ModalSubTitle } from './styles'\n\nimport InfoSensor from './StepContent/InfoSensor'\nimport SubmitSensor from './StepContent/SubmitSensor'\nimport SubmitGateways from './StepContent/SubmitGateways'\nimport SubmitPanels from './StepContent/SubmitPanels'\nimport SubmitRepeater from './StepContent/SubmitRepeater'\n\nimport isEqual from 'lodash.isequal'\n\nconst CreateNewAssetModal = ({\n children,\n type,\n setType,\n typeOptions,\n form,\n handleChange,\n checkIfError,\n hasSubmitted,\n handleBackButton,\n handleNextButton,\n active,\n setActive,\n steps,\n error,\n monitoringOptions,\n areas,\n gateways,\n gatewaysTypeOptions,\n open,\n onClose,\n allowedOptions,\n submitting,\n fetchLocationOptions\n}) => {\n const { t } = useTranslation()\n\n const [filteredGateways, setFilteredGateways] = useState([])\n\n const searchInputTimeoutRef = useRef(null)\n const [searchOptions, setSeachOptions] = useState([])\n const [textInput, setTextInput] = useState('')\n const [locationSelected, setLocationSelected] = useState(null)\n\n useEffect(() => {\n if (searchInputTimeoutRef.current !== null) {\n clearTimeout(searchInputTimeoutRef.current)\n }\n searchInputTimeoutRef.current = setTimeout(() => {\n searchInputTimeoutRef.current = null\n if (fetchLocationOptions) {\n fetchLocationOptions({ params: { q: textInput, format: 'jsonv2' } })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(data)\n } else {\n setSeachOptions([])\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions([])\n })\n }\n }, 500)\n // eslint-disable-next-line\n }, [textInput])\n\n const helperTextGenerator = useCallback(\n property => {\n if (hasSubmitted && form[property] != null) {\n const apiError = checkIfError(property)\n if (apiError != null) {\n return apiError\n } else if (form[property].message) {\n return t(`errors.${form[property].message}`)\n }\n }\n return null\n },\n // eslint-disable-next-line\n [hasSubmitted, form]\n )\n\n const memoSetType = useCallback(\n e => setType(e.target.value),\n // eslint-disable-next-line\n []\n )\n\n const filterGatewaysWithArea = useCallback(\n area => {\n if (\n steps[active] === 'submit_sensor' &&\n areas != null &&\n gateways != null\n ) {\n if (area != null && area !== '' && form.gateway != null) {\n const areaFound = areas.find(el => el.id === area)\n if (areaFound != null && areaFound.id != null) {\n if (form?.gateway?.value == null) {\n // TROCAR PARA IDS\n const gatewaysInArea = gateways.filter(\n gw => gw.area == null || gw.area.id === areaFound.id\n )\n setFilteredGateways(gatewaysInArea)\n } else {\n const gwFound = gateways.find(gw => gw.id === form.gateway.value)\n // TROCAR UID POR ID @fcardoso\n if (\n gwFound != null &&\n gwFound.area != null &&\n gwFound.area.id !== areaFound.id\n ) {\n handleChange('gateway', null)\n }\n }\n } else {\n setFilteredGateways(gateways)\n }\n } else {\n setFilteredGateways(gateways)\n }\n }\n },\n [active, areas, form?.gateway, gateways, handleChange, steps]\n )\n\n useEffect(() => {\n if (\n steps[active] === 'submit_sensor' &&\n areas != null &&\n gateways != null &&\n form != null &&\n form.area != null\n ) {\n filterGatewaysWithArea(form.area.value)\n }\n // eslint-disable-next-line\n }, [form, active])\n\n const onSearchChange = useCallback(event => setTextInput(event), [\n setTextInput\n ])\n const onSearchInputChange = useCallback(\n (event, newValue) => setLocationSelected(newValue),\n [setLocationSelected]\n )\n\n const getOptionLabel = useCallback(option => option.displayName, [])\n\n const mapSearchProps = useMemo(\n () => ({\n value: textInput,\n onChange: onSearchChange,\n inputValue: locationSelected,\n onInputChange: onSearchInputChange,\n options: searchOptions,\n label: t('map.search_location'),\n getOptionLabel: getOptionLabel\n }),\n [\n getOptionLabel,\n searchOptions,\n onSearchInputChange,\n locationSelected,\n onSearchChange,\n textInput,\n t\n ]\n )\n\n const getStepContent = useCallback(() => {\n switch (steps[active]) {\n case 'type':\n return (\n <>\n \n >\n )\n case 'info_sensor':\n if (form != null) {\n return (\n \n )\n }\n setActive(0)\n return null\n case 'submit_sensor':\n if (form != null) {\n return (\n \n )\n }\n setActive(0)\n return null\n case 'submit_gateways':\n if (form != null) {\n return (\n \n )\n }\n setActive(0)\n return null\n case 'submit_panels':\n if (form != null) {\n return (\n \n )\n }\n setActive(0)\n return null\n case 'submit_repeater':\n if (form != null) {\n return (\n \n )\n }\n setActive(0)\n return null\n default:\n setActive(0)\n return null\n }\n }, [\n active,\n allowedOptions,\n areas,\n checkIfError,\n error,\n filteredGateways,\n form,\n gatewaysTypeOptions,\n handleChange,\n hasSubmitted,\n helperTextGenerator,\n locationSelected,\n mapSearchProps,\n memoSetType,\n monitoringOptions,\n searchOptions,\n setActive,\n steps,\n t,\n textInput,\n type,\n typeOptions\n ])\n\n return (\n \n \n {t('assets.new')}\n \n {type != null && active !== 0 ? t(`assets.new_${type}`) : ''}\n \n {getStepContent()}\n \n {t('assets.previous')}\n \n }\n nextButton={\n \n {active < steps.length - 1 || active === 0\n ? t('assets.next')\n : t('assets.create')}\n \n }\n />\n \n \n )\n}\n\nexport default memo(CreateNewAssetModal, isEqual)\n","import React from 'react'\nimport styled from 'styled-components'\nimport { DATETIME_FORMAT } from 'config'\nimport moment from 'moment'\n\nexport const mapStatusToColors = status => {\n switch (status) {\n case 'ok':\n return 'var(--success-color)'\n case 'not_ok':\n return 'var(--error-color)'\n case 'unknown':\n return 'var(--warning-color)'\n default:\n return 'var(--unknown-color)'\n }\n}\n\nconst columns = [\n {\n key: 'uid',\n label: 'table.uid',\n render: ({ setHardwareInDetail, t, ...element }) => (\n setHardwareInDetail(element)}>\n {element.uid}\n \n )\n },\n {\n key: 'name',\n label: 'table.name'\n\n },\n {\n key: 'deviceType',\n label: 'table.device_type',\n render: ({ t, ...element }) => t(`table.${element.deviceType}`)\n },\n // {\n // key: 'monitoringType',\n // label: 'table.counting_type',\n // render: ({ t, ...element }) => {\n // if (element.deviceType != null && element.deviceType !== 'panel') {\n // if (element.monitoringType != null) {\n // return t(`table.${element.monitoringType}`)\n // }\n // }\n // return '-'\n // }\n // },\n {\n key: 'area',\n label: 'table.area',\n render: element => {\n if (element?.area != null && Array.isArray(element?.area)) {\n const joined = element?.area?.map(el => el.name)?.join(', ')\n return {joined}\n } else {\n return element?.area?.name\n }\n }\n },\n {\n key: 'status',\n label: 'table.status',\n render: ({ t, ...element }) => (\n \n {element.status != null\n ? element.status !== undefined\n ? t(`table.${element.status}`)\n : '-'\n : t('table.unknown')}\n \n )\n },\n {\n key: 'lastSeen',\n label: 'table.last_communication',\n render: element =>\n element.lastSeen\n ? moment(element.lastSeen).format(DATETIME_FORMAT)\n : '-'\n }\n]\n\nexport default columns\n\nconst StatusWithColor = styled.p`\n font-size: inherit;\n line-height: inherit;\n font-weight: inherit;\n color: ${({ color }) => color || 'var(--black-color)'};\n`\n\nconst StyledLink = styled.span`\n color: var(--primary-color);\n cursor: pointer;\n &:hover {\n text-decoration: underline;\n }\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport { DATETIME_FORMAT } from 'config'\nimport moment from 'moment'\n\nimport { mapStatusToColors } from 'scenes/Hardware/columns'\n\nexport default ({ children, ...props }) => {\n const { element, setInDetail } = props\n const { t } = useTranslation()\n return (\n setInDetail(element)}>\n \n {t(`table.${element.deviceType}`)}{' '}\n {element.deviceType != null && element.deviceType !== 'panel'\n ? element.monitoringType != null &&\n ` - ${t(`table.${element.monitoringType}`)}`\n : ''}\n \n \n {element.uid}\n\n \n {element.status != null\n ? t(`table.${element.status}`)\n : t('table.unknown')}\n \n {t('table.area')}\n \n {element.area != null && element.area.name != null\n ? element.area.name\n : '-'}\n \n {t('table.last_communication')}\n \n {element.lastSeen != null\n ? moment(element.lastSeen).format(DATETIME_FORMAT)\n : '-'}\n \n \n )\n}\nconst Wrapper = styled.div`\n background: white;\n padding: 1rem 0;\n display: grid;\n grid-template-columns: 2.5fr 1fr;\n grid-template-rows: auto auto auto;\n column-gap: 8px;\n\n border-bottom: 1px solid var(--breadcrumb-gray-color);\n\n color: var(--text-color);\n font-size: 0.875rem;\n letter-spacing: 0;\n line-height: 1em;\n font-family: var(--primary-font);\n`\n\nconst StatusWithColor = styled.p`\n font-size: inherit;\n line-height: inherit;\n font-weight: inherit;\n text-align: right;\n color: ${({ color }) => color || 'var(--black-color)'};\n\n grid-column: 2/3;\n grid-row: 1/4;\n`\n\nconst Uid = styled.p`\n font-size: 1.5rem;\n color: var(--primary-color);\n line-height: 1.2em;\n margin-bottom: 1rem;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\nconst Name = styled.h1`\n margin-bottom: 0.25rem;\n\n font-size: 0.75rem;\n color: var(--breadcrumb-gray-color);\n`\n\nconst Label = styled.p`\n font-weight: 700;\n font-size: 0.875rem;\n`\n\nconst Value = styled.p`\n font-size: 0.75rem;\n color: var(--breadcrumb-gray-color);\n text-align: right;\n`\n","import React, {\n useState,\n useEffect,\n useContext,\n memo,\n useCallback,\n useMemo\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport get from 'lodash.get'\nimport isEqual from 'lodash.isequal'\n\nimport findMinStepError from 'utils/findMinStepError'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport logic, { types, STEP_VALIDATIONS } from './logic'\nimport { stepsByType } from './utils'\n\nimport StyledTable from 'components/StyledTable'\nimport StyledSkeleton from 'components/StyledSkeleton'\nimport CreateNewAssetModal from 'containers/CreateNewAssetModal'\nimport StyledPagination from 'components/StyledPagination'\nimport HardwareTemplate from 'components/HardwareTemplate'\nimport StyledMobileTable from 'components/StyledMobileTable'\nimport toast from 'components/StyledToast'\n\nconst HardwareList = ({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n\n const {\n loading,\n hardware,\n hardwareCount,\n columns,\n monitoringOptions,\n setHardwareInDetail,\n open,\n setOpen,\n allowedOptions,\n fetchedAreas,\n fetchedGateways,\n setTitle,\n pagination,\n setPagination,\n triggerSet,\n gatewaysTypeOptions,\n responsiveHandlers\n } = props\n\n const { t } = useTranslation()\n\n const [form, setForm] = useState(null)\n\n const [type, setType] = useState(null)\n\n const [submitState, setSubmitState] = useState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n\n const [active, setActive] = useState(0)\n const [steps, setSteps] = useState(['type'])\n const [error, setError] = useState(null)\n\n const reset = useCallback(() => {\n setForm(null)\n setSubmitState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n }, [])\n\n const handleClose = useCallback(() => {\n setType(null)\n setOpen(false)\n reset()\n }, [reset, setOpen, setType])\n\n const handleSubmit = useCallback(() => {\n setSubmitState(submitState => ({\n ...submitState,\n hasSubmitted: true,\n submitting: true\n }))\n logic\n .submitNewHardware(type, form, form => setForm({ ...form }))\n .then(response => {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n if (response.data) {\n handleClose()\n triggerSet()\n toast.success(t('assets.create_success'))\n }\n })\n .catch(err => {\n console.log({ err })\n toast.error(t('assets.create_error'))\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n\n if (err == null || err.response == null) {\n actions.serverError()\n } else {\n if (err.response.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n apiResponse: err.response.data\n }))\n const errorStep = findMinStepError(\n err.response.data,\n STEP_VALIDATIONS,\n type\n )\n if (errorStep != null) {\n setActive(errorStep + 1) // first step is choose type\n }\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n }\n })\n }, [form, type, actions, handleClose, t, triggerSet])\n\n const handleBackButton = useCallback(() => {\n setActive(active - 1)\n }, [active])\n\n useEffect(() => {\n setHardwareInDetail(null)\n reset()\n setTitle('assets.filter_title')\n // eslint-disable-next-line\n }, [])\n\n const handleNextButton = useCallback(() => {\n if (type != null && stepsByType != null) {\n if (active === 0) {\n setSteps(stepsByType[type])\n setActive(active + 1)\n return\n }\n setSubmitState(submitState => ({\n ...submitState,\n hasSubmitted: true\n }))\n\n const found = steps.find(el => el.includes('submit'))\n if (found != null && active === steps.indexOf(found)) {\n handleSubmit()\n return\n }\n logic\n .validateStepForm(type, stepsByType[type][active], form, form =>\n setForm({ ...form })\n )\n .then(response => {\n setActive(active + 1)\n })\n .catch(err => {\n console.log({ err })\n })\n } else {\n setError(true)\n }\n }, [type, steps, form, active, handleSubmit])\n\n useEffect(() => {\n if (!open) {\n reset()\n }\n }, [open, reset])\n\n useEffect(() => {\n if (type != null && types.includes(type)) {\n setForm(logic.defaultValues[type])\n } else {\n setForm(null)\n }\n }, [type])\n\n const checkIfError = useCallback(\n property => {\n const error = get(submitState.apiResponse, property, null)\n if (\n submitState.apiResponse != null &&\n error != null &&\n error[0] != null\n ) {\n return error[0]\n }\n return null\n },\n [submitState]\n )\n\n const handleChange = useCallback(\n (key, value) => {\n setForm({\n ...form,\n [key]: {\n value: value\n }\n })\n },\n [form]\n )\n\n const handlePaginationChange = useCallback(\n (event, page) => setPagination({ ...pagination, offset: page }),\n [pagination, setPagination]\n )\n\n const memoizedItems = useMemo(() => {\n return hardware\n .slice(\n (pagination.offset - 1) * pagination.limit,\n (pagination.offset - 1) * pagination.limit + pagination.limit\n )\n .map(el => ({ ...el, setHardwareInDetail }))\n }, [hardware, pagination, setHardwareInDetail])\n\n const memoizedColumns = useMemo(() => {\n return columns.map(el => ({ ...el, label: t(el.label) }))\n }, [columns, t])\n\n const memoizedLoadingTable = useMemo(\n () =>\n [...Array(6)].map((el, index) => (\n \n )),\n []\n )\n\n const memoizedTypes = useMemo(\n () =>\n types.map(el => ({\n value: el,\n label: t(`assets.new_${el}`)\n })),\n // eslint-disable-next-line\n []\n )\n\n return (\n <>\n {!loading ? (\n <>\n {hardware != null && responsiveHandlers.isDesktop && (\n \n )}\n {hardware != null && !responsiveHandlers.isDesktop && (\n \n )}\n {hardware != null && (\n \n )}\n >\n ) : (\n <>{memoizedLoadingTable}>\n )}\n {open && (\n \n )}\n >\n )\n}\n\nexport default memo(withResponsive(HardwareList), isEqual)\n","export default (apiError, validations, type) => {\n if (\n type != null &&\n apiError != null &&\n validations != null &&\n validations[type] != null\n ) {\n const steps = Object.keys(validations[type])\n let minStepError = steps.length - 1\n const errorKeys = Object.keys(apiError)\n for (let i = steps.length - 1; i >= 0; i--) {\n if (validations[type][steps[i]] != null) {\n const validationKeys = Object.keys(validations[type][steps[i]])\n\n const found = errorKeys.some(errKey => {\n return validationKeys.includes(errKey)\n })\n if (found) {\n minStepError = i\n }\n }\n }\n return minStepError\n }\n return null\n}\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\nimport { BASE_API_URL, NOMINATIM_BASE_URL, NOMINATIM_OPTIONS } from 'config'\nconst DETAILS_URL = BASE_API_URL + '' // without / to better understand on axios\nconst AVAIALABLESENSORS_URL = BASE_API_URL + '/sensors/without_gateway/'\nconst AVAIALABLESPOTS_URL = BASE_API_URL + '/spots/'\nconst NOMINATIM_SEARCH_URL = NOMINATIM_BASE_URL + '/search'\n\nexport const types = ['sensor', 'gateway', 'panel', 'repeater']\nexport const typesUrls = ['sensors', 'gateways', 'panels', 'repeaters']\n\nexport const keysToId = ['area']\n\nconst VALIDATIONS = {\n sensor: {\n uid: [Check.isRequired],\n factoryUid: [Check.isRequired],\n area: [],\n description: [],\n gateway: [],\n geometry: [Check.isRequired],\n monitoringType: [Check.isRequired],\n name: [],\n number: [],\n magnetometerThreshold: [],\n distanceThreshold: [],\n allowed: [Check.isRequired],\n softwareVersion: [],\n spot: []\n },\n gateway: {\n uid: [Check.isRequired],\n factoryUid: [Check.isRequired],\n geometry: [Check.isRequired],\n area: [],\n name: [],\n networkKey: [Check.isRequired],\n type: [Check.isRequired],\n sensors: []\n },\n panel: {\n uid: [Check.isRequired],\n area: [],\n name: [Check.isRequired],\n lastValue: [Check.isRequired],\n lastSeen: [Check.isRequired],\n geometry: [Check.isRequired]\n },\n repeater: {\n uid: [Check.isRequired],\n area: [Check.isRequired],\n name: [Check.isRequired],\n geometry: [Check.isRequired],\n factoryUid: [Check.isRequired]\n\n },\n spot: {\n uid: [Check.isRequired],\n sensor: [Check.isRequired],\n spotType: [Check.isRequired],\n geometry: [Check.isRequired]\n }\n}\n\nconst logic = {\n defaultValues: {\n sensor: {\n uid: { value: null },\n factoryUid: { value: null },\n area: { value: null },\n description: { value: null },\n gateway: { value: null },\n geometry: { value: null },\n monitoringType: { value: null },\n name: { value: null },\n number: { value: null },\n magnetometerThreshold: { value: null },\n distanceThreshold: { value: null },\n allowed: { value: true },\n softwareVersion: { value: null },\n spot: { value: null }\n },\n gateway: {\n uid: { value: null },\n factoryUid: { value: null },\n area: { value: null },\n name: { value: null },\n networkKey: { value: null },\n type: { value: null },\n geometry: { value: null },\n sensors: { value: null }\n },\n panel: {\n uid: { value: null },\n area: { value: [] },\n name: { value: null },\n lastValue: { value: null },\n lastSeen: { value: null },\n geometry: { value: null }\n },\n repeater: {\n uid: { value: null },\n area: { value: null },\n name: { value: null },\n geometry: { value: null },\n factoryUid: { value: null }\n\n }\n },\n spotDefaultValues: {\n uid: { value: null },\n sensor: { value: null },\n spotType: { value: null },\n geometry: { value: null }\n },\n getHardwareDetails: (id, type) => {\n const typeIndex = types.indexOf(type)\n const typeUrl = typeIndex !== -1 ? typesUrls[typeIndex] : null\n if (typeUrl != null) {\n return Promise.resolve().then(() =>\n axios.get(`${DETAILS_URL}/${typeUrl}/${id}/`)\n )\n }\n },\n fetchAvailableSensors: options =>\n Promise.resolve().then(() => axios.get(AVAIALABLESENSORS_URL, options)),\n fetchAvailableSpots: options =>\n Promise.resolve().then(() => axios.get(AVAIALABLESPOTS_URL, options)),\n updateHardwareDetails: (id, type, form, setForm) =>\n Promise.resolve().then(() => {\n const validation = Check.checkValidation(\n form,\n VALIDATIONS[type] != null ? VALIDATIONS[type] : {}\n )\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n const typeIndex = types.indexOf(type)\n const typeUrl = typeIndex !== -1 ? typesUrls[typeIndex] : null\n if (typeUrl != null) {\n const params = mapValues(form, ({ value }) => value)\n return axios.put(`${DETAILS_URL}/${typeUrl}/${id}/`, { ...params })\n }\n }),\n deleteHardware: (id, type) => {\n const typeIndex = types.indexOf(type)\n const typeUrl = typeIndex !== -1 ? typesUrls[typeIndex] : null\n if (typeUrl != null) {\n return Promise.resolve().then(() =>\n axios.delete(`${DETAILS_URL}/${typeUrl}/${id}/`)\n )\n }\n },\n submitNewSpot: (form, setForm) =>\n Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS.spot)\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n\n const params = mapValues(form, ({ value }) => value)\n return axios.post(AVAIALABLESPOTS_URL, { ...params })\n }),\n fetchLocationOptions: options =>\n Promise.resolve().then(() =>\n axios.get(NOMINATIM_SEARCH_URL, {\n ...options,\n params: {\n ...options.params,\n ...NOMINATIM_OPTIONS\n }\n })\n )\n}\n\nexport default logic\n","import React, {\n useState,\n useEffect,\n useRef,\n useMemo,\n useCallback,\n memo\n} from 'react'\nimport styled, { css } from 'styled-components'\nimport get from 'lodash.get'\nimport isEqual from 'lodash.isequal'\nimport { useTranslation } from 'react-i18next'\n\nimport StyledModal from 'components/StyledModal'\nimport StyledButton from 'components/StyledButton'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport MapContainer from 'containers/MapContainer'\nimport SelectAndLabel from 'containers/SelectAndLabel'\n\nimport TitleStyle from 'styled/TitleStyle'\n\nconst CreateNewSpotModal = ({ children, ...props }) => {\n const {\n form,\n open,\n onClose,\n handleChange,\n apiResponse,\n hasSubmitted,\n spotTypeOptions,\n fetchedSensors,\n handleSubmit,\n submitting,\n fetchLocationOptions,\n sensor\n } = props\n const { t } = useTranslation()\n\n const searchInputTimeoutRef = useRef(null)\n const [searchOptions, setSeachOptions] = useState([])\n const [textInput, setTextInput] = useState('')\n const [locationSelected, setLocationSelected] = useState(null)\n\n useEffect(() => {\n if (sensor != null) {\n handleChange('sensor', [sensor?.id])\n }\n // eslint-disable-next-line\n }, [sensor])\n\n useEffect(() => {\n if (searchInputTimeoutRef.current !== null) {\n clearTimeout(searchInputTimeoutRef.current)\n }\n searchInputTimeoutRef.current = setTimeout(() => {\n searchInputTimeoutRef.current = null\n if (fetchLocationOptions) {\n fetchLocationOptions({\n params: { q: textInput, format: 'jsonv2', addressdetails: 1 }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(data)\n } else {\n setSeachOptions([])\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions([])\n })\n }\n }, 500)\n // eslint-disable-next-line\n }, [textInput])\n\n const checkIfError = useCallback(\n property => {\n const error = get(apiResponse, property, null)\n if (apiResponse != null && error != null && error[0] != null) {\n return error[0]\n }\n return null\n },\n [apiResponse]\n )\n\n const helperTextGenerator = useCallback(\n property => {\n if (hasSubmitted && form[property] != null) {\n const apiError = checkIfError(property)\n if (apiError != null) {\n return apiError\n } else if (form[property].message) {\n return t(`errors.${form[property].message}`)\n }\n }\n return null\n },\n [checkIfError, form, hasSubmitted, t]\n )\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const onSearchChange = useCallback(event => setTextInput(event), [\n setTextInput\n ])\n const onSearchInputChange = useCallback(\n (event, newValue) => setLocationSelected(newValue),\n [setLocationSelected]\n )\n\n const getOptionLabel = useCallback(option => option.displayName, [])\n\n const mapSearchProps = useMemo(\n () => ({\n value: textInput,\n onChange: onSearchChange,\n inputValue: locationSelected,\n onInputChange: onSearchInputChange,\n options: searchOptions,\n label: t('map.search_location'),\n getOptionLabel: getOptionLabel\n }),\n [\n getOptionLabel,\n searchOptions,\n onSearchInputChange,\n locationSelected,\n onSearchChange,\n textInput,\n t\n ]\n )\n\n const memoSpotTypeOptions = useMemo(\n () =>\n spotTypeOptions?.filter(el => el.value !== 'all').map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })) ?? [],\n [spotTypeOptions, t]\n )\n\n const memoSensorsOptions = useMemo(\n () =>\n sensor == null\n ? fetchedSensors?.map(el => ({\n value: el.id,\n label: el.uid\n })) ?? []\n : [\n {\n value: sensor?.id,\n label: sensor?.uid\n }\n ],\n [sensor, fetchedSensors]\n )\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [\n locationSelected?.boundingbox?.[2],\n locationSelected?.boundingbox?.[0]\n ],\n [\n locationSelected?.boundingbox?.[3],\n locationSelected?.boundingbox?.[1]\n ]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n return (\n \n \n {t('spots.new')}\n \n \n \n \n \n \n \n \n {checkIfError('geometry') || t('map.spot_helper_text')}\n \n \n \n \n \n \n \n \n \n \n {t('create')}\n \n \n \n \n )\n}\n\nexport default memo(CreateNewSpotModal, isEqual)\n\nconst NewSpotWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst ModalTitle = styled.h2`\n ${TitleStyle};\n\n margin-bottom: 1.5rem;\n`\n\nconst SameLineInputs = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n column-gap: 1rem;\n`}\n`\n\nconst NewSensorMapHelperText = styled.p`\n color: var(--primary-color);\n font-size: 0.875rem;\n font-style: italic;\n letter-spacing: 0;\n line-height: 1em;\n\n margin-top: 0.25rem;\n\n ${props =>\n props.error &&\n css`\n color: var(--error-color);\n `}\n`\n\nconst NewSensorMapAndLabel = styled.div`\n margin-bottom: 1.5rem;\n font-size: 0.75rem;\n ${props =>\n props.error &&\n css`\n margin-bottom: calc(1.5rem - 1.66em);\n `}\n`\nconst NewSensorMapWrapper = styled.div`\n width: 100%;\n height: 20rem;\n\n ${({ theme }) => theme.smallDesktop`\n height: 11rem;\n\n`}\n`\n\nconst NewSensorButtonWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(10rem, 1fr);\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: minmax(12.375rem, 1fr) minmax(9rem, 1fr) minmax(\n 12.375rem,\n 1fr\n );\n`}\n`\n\nconst Blank = styled.div`\n grid-column: span 1;\n`\n","import React, {\n useState,\n useEffect,\n useContext,\n useMemo,\n useCallback\n} from 'react'\nimport styled, { css } from 'styled-components'\nimport get from 'lodash.get'\n\nimport { AVAILABLE_SPOT_TYPES, DATETIME_FORMAT } from 'config'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport { useTranslation } from 'react-i18next'\nimport { useParams } from 'react-router-dom'\nimport moment from 'moment'\n\nimport logic, { types, keysToId } from './logic'\n\nimport StyledButton from 'components/StyledButton'\nimport StyledDialog from 'components/StyledDialog'\nimport StyledSkeleton from 'components/StyledSkeleton'\nimport toast from 'components/StyledToast'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport SelectAndLabel from 'containers/SelectAndLabel'\nimport CreateNewSpotModal from 'containers/CreateNewSpotModal'\n\nexport default withResponsive(({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n\n const { t } = useTranslation()\n const { type, id } = useParams()\n\n const {\n hardwareInDetail,\n setHardwareInDetail,\n isEditing,\n setIsEditing,\n setGeometry,\n geometry,\n allowedOptions,\n fetchedAreas,\n fetchedGateways,\n setTitle,\n setMapHelperText,\n canEdit,\n fetchedHardware,\n setFetchedHardware,\n resetParent,\n hasCRUDPermission,\n update,\n gatewaysTypeOptions,\n responsiveHandlers,\n countingTypeOptions\n } = props\n\n const [form, setForm] = useState(null)\n\n const [submitState, setSubmitState] = useState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n\n const [availableSensors, setAvailableSensors] = useState(null)\n const [availableSpots, setAvailableSpots] = useState(null)\n\n const [filteredGateways, setFilteredGateways] = useState([])\n\n const [spotsOpen, setSpotsOpen] = useState(false)\n\n const [newSpotState, setNewSpotState] = useState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n const [newSpotOpen, setNewSpotOpen] = useState(false)\n const [newSpotForm, setNewSpotForm] = useState(logic.spotDefaultValues)\n const [canDelete, setCanDelete] = useState(true)\n\n const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false)\n\n const handleClickOpen = useCallback(() => {\n setConfirmDeleteOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n setConfirmDeleteOpen(false)\n }, [])\n\n const spotTypeOptions = useMemo(\n () => [...AVAILABLE_SPOT_TYPES?.map(el => ({ label: el, value: el }))],\n []\n )\n\n const reset = useCallback(() => {\n setForm(null)\n setSubmitState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n setNewSpotOpen(false)\n resetParent()\n }, [resetParent])\n\n useEffect(() => {\n if (!newSpotOpen) {\n setNewSpotForm(logic.spotDefaultValues)\n setNewSpotState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: false\n })\n }\n }, [newSpotOpen])\n\n useEffect(() => {\n if (!isEditing && fetchedHardware != null) {\n setGeometry(fetchedHardware.geometry)\n if (type != null && (type === 'gateway' || type === 'sensor')) {\n logic\n .fetchAvailableSensors()\n .then(response => {\n if (\n response != null &&\n response.data != null &&\n response.data.results != null\n ) {\n setAvailableSensors(response.data)\n } else {\n setAvailableSensors([])\n }\n })\n .catch(err => {\n console.log({ err })\n setAvailableSensors([])\n })\n }\n\n if (type != null && type === 'sensor') {\n logic\n .fetchAvailableSpots()\n .then(response => {\n if (response != null && response.data != null) {\n const { results } = response.data\n setAvailableSpots(results)\n } else {\n setAvailableSpots([])\n }\n })\n .catch(err => {\n console.log({ err })\n setAvailableSpots([])\n })\n }\n }\n // eslint-disable-next-line\n }, [fetchedHardware])\n\n useEffect(() => {\n if (\n id != null &&\n !isNaN(Number(id)) &&\n type != null &&\n types.includes(type)\n ) {\n if (!isEditing) {\n setSubmitState(submitState => ({\n ...submitState,\n apiResponse: null,\n hasSubmitted: false,\n submitting: false\n }))\n resetParent()\n logic\n .getHardwareDetails(id, type)\n .then(response => {\n if (response.data) {\n const { data } = response\n setFetchedHardware(data)\n\n if (data.mode === 'automatic') {\n setCanDelete(false)\n }\n\n const defaultKeys = Object.keys(logic.defaultValues[type])\n const reduced = Object.keys(data).reduce(\n (acum, key) => {\n if (defaultKeys.includes(key)) {\n if (\n keysToId.includes(key) &&\n data[key] != null &&\n data[key].id != null\n ) {\n acum[key] = { value: data[key].id }\n } else if (key === 'spot' || key === 'sensors') {\n acum[key] = { value: data[key].map(el => el.id) }\n } else {\n acum[key] = { value: data[key] }\n }\n }\n return acum\n },\n { ...logic.defaultValues }\n )\n setForm(reduced)\n\n if (hardwareInDetail == null) {\n setHardwareInDetail(data, type)\n }\n } else {\n reset()\n setHardwareInDetail(null)\n setFetchedHardware(null)\n }\n })\n .catch(err => {\n console.log({ err })\n setHardwareInDetail(null)\n setFetchedHardware(null)\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }\n } else {\n reset()\n setHardwareInDetail(null)\n setFetchedHardware(null)\n }\n // eslint-disable-next-line\n }, [id, type, isEditing, update])\n\n const checkIfError = useCallback(\n property => {\n const error = get(submitState.apiResponse, property, null)\n if (\n submitState.apiResponse != null &&\n error != null &&\n error[0] != null\n ) {\n return error[0]\n }\n return null\n },\n [submitState.apiResponse]\n )\n\n const helperTextGenerator = useCallback(\n property => {\n if (submitState.hasSubmitted && form[property] != null) {\n const apiError = checkIfError(property)\n if (apiError != null) {\n return apiError\n } else if (form[property].message) {\n return t(`errors.${form[property].message}`)\n }\n }\n return null\n },\n [checkIfError, form, submitState.hasSubmitted, t]\n )\n\n const handleChange = useCallback(\n (key, value) => {\n setForm({\n ...form,\n [key]: {\n value: value\n }\n })\n },\n [form]\n )\n\n const handleNewSpotChange = useCallback(\n (key, value) => {\n setNewSpotForm({\n ...newSpotForm,\n [key]: {\n value: value\n }\n })\n },\n [newSpotForm]\n )\n\n useEffect(() => {\n if (isEditing) {\n handleChange('geometry', geometry)\n }\n // eslint-disable-next-line\n }, [geometry])\n\n const handleNewSpotSubmit = useCallback(\n event => {\n event.preventDefault()\n setNewSpotState({\n ...newSpotState,\n submitting: true,\n hasSubmitted: true\n })\n logic\n .submitNewSpot(newSpotForm, changedForm =>\n setNewSpotForm({ ...changedForm })\n )\n .then(response => {\n setNewSpotState({\n ...newSpotState,\n submitting: false\n })\n if (response.data) {\n toast.success(t('spots.create_success'))\n\n setAvailableSpots([response.data, ...availableSpots])\n setNewSpotOpen(false)\n if (form != null && form.spot != null) {\n handleChange('spot', [response.data.id])\n }\n }\n })\n .catch(err => {\n console.log({ err })\n toast.error(t('spots.create_error'))\n if (err == null || err.response == null) {\n actions.serverError()\n } else {\n if (err.response.data != null) {\n setNewSpotState({\n hasSubmitted: true,\n submitting: false,\n apiResponse: err.response.data\n })\n } else {\n setNewSpotState({\n hasSubmitted: true,\n apiResponse: newSpotState.apiResponse,\n submitting: false\n })\n }\n }\n })\n },\n [actions, availableSpots, form, handleChange, newSpotForm, newSpotState, t]\n )\n\n const handleSubmit = useCallback(\n event => {\n event.preventDefault()\n setSubmitState(submitState => ({\n ...submitState,\n hasSubmitted: true,\n submitting: true\n }))\n logic\n .updateHardwareDetails(id, type, form, form => setForm({ ...form }))\n .then(response => {\n setIsEditing(false)\n if (response.data) {\n setHardwareInDetail(response.data, type)\n toast.success(t('assets.edit_success'))\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n .catch(err => {\n console.log({ err })\n toast.error(t('assets.edit_error'))\n\n if (err == null || err.response == null) {\n actions.serverError()\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n } else {\n if (err.response.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n apiResponse: err.response.data\n }))\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n }\n })\n },\n [actions, form, id, setHardwareInDetail, setIsEditing, t, type]\n )\n\n const handleDelete = useCallback(() => {\n logic\n .deleteHardware(id, type)\n .then(response => {\n setHardwareInDetail(null)\n toast.success(t('assets.delete_success'))\n })\n .catch(err => {\n console.log({ err })\n toast.error(t('assets.delete_error'))\n\n // ERROR\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n .finally(() => handleClose())\n }, [actions, handleClose, id, setHardwareInDetail, t, type])\n\n useEffect(() => {\n if (fetchedHardware != null && fetchedHardware.uid != null) {\n if (isEditing) {\n setTitle(type != null ? `assets.edit_${type}` : 'assets.edit')\n } else {\n setTitle(type != null ? `assets.details_${type}` : 'assets.details')\n }\n } else if (hardwareInDetail != null && hardwareInDetail.uid != null) {\n if (isEditing) {\n setTitle(type != null ? `assets.edit_${type}` : 'assets.edit')\n } else {\n setTitle(type != null ? `assets.details_${type}` : 'assets.details')\n }\n } else {\n if (isEditing) {\n setTitle(type != null ? `assets.edit_${type}` : 'assets.edit')\n } else {\n setTitle(type != null ? `assets.details_${type}` : 'assets.details')\n }\n }\n }, [fetchedHardware, hardwareInDetail, isEditing, setTitle, t, type])\n\n const filterGatewaysWithArea = useCallback(\n area => {\n if (\n isEditing &&\n type === 'sensor' &&\n fetchedAreas != null &&\n fetchedGateways != null\n ) {\n if (area != null && area !== '' && form?.gateway != null) {\n const areaFound = fetchedAreas?.find(el => el?.id === area)\n if (areaFound?.id) {\n if (form?.gateway?.value == null) {\n const gatewaysInArea = fetchedGateways?.filter(\n gw => gw?.area?.id === areaFound?.id\n )\n setFilteredGateways(gatewaysInArea)\n } else {\n const gwFound = fetchedGateways?.find(\n gw => gw.id === form?.gateway?.value\n )\n if (gwFound?.area?.id !== areaFound?.id) {\n handleChange('gateway', null)\n }\n setFilteredGateways(fetchedGateways)\n }\n } else {\n setFilteredGateways(fetchedGateways)\n }\n } else {\n setFilteredGateways(fetchedGateways)\n }\n }\n },\n [\n fetchedAreas,\n fetchedGateways,\n handleChange,\n isEditing,\n type,\n form?.gateway\n ]\n )\n\n useEffect(() => {\n if (isEditing) {\n setMapHelperText(\n \n {checkIfError('geometry') || t('map.asset_edit_text')}\n \n )\n }\n if (\n isEditing &&\n type != null &&\n type === 'sensor' &&\n fetchedAreas != null &&\n fetchedGateways != null &&\n form != null &&\n form.area != null\n ) {\n filterGatewaysWithArea(form.area.value)\n } else {\n setFilteredGateways(fetchedGateways)\n }\n // eslint-disable-next-line\n }, [form, isEditing])\n\n const memoizedLoadingTable = useMemo(() => {\n let numberOfInputs = 13\n switch (type) {\n case 'sensor':\n numberOfInputs = 13\n break\n case 'gateway':\n numberOfInputs = 7\n break\n case 'panel':\n numberOfInputs = 4\n break\n case 'repeater':\n numberOfInputs = 4\n break\n default:\n numberOfInputs = 13\n break\n }\n return [...Array(numberOfInputs)].map((el, index) => (\n \n ))\n }, [type])\n\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n\n const memoHandleChangeArray = useCallback(\n name => event =>\n handleChange(\n name,\n event?.target?.value !== '' ? [event?.target?.value] : []\n ),\n [handleChange]\n )\n\n const memoHandleChangeEmptyString = useCallback(\n name => event =>\n handleChange(\n name,\n event?.target?.value !== '' ? event?.target?.value : null\n ),\n [handleChange]\n )\n\n const memoNewButton = useMemo(\n () =>\n form?.spot?.value?.[0] == null ? (\n \n {\n setSpotsOpen(false)\n setNewSpotOpen(true)\n }}\n width='100%'\n >\n {t('assets.new_spot')}\n \n \n ) : null,\n [form?.spot?.value, t]\n )\n\n const memoAllowedOptions = useMemo(\n () =>\n allowedOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })) ?? [],\n [allowedOptions, t]\n )\n\n const memoCountingTypeOptions = useMemo(\n () =>\n countingTypeOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })),\n [t, countingTypeOptions]\n )\n\n const memoFetchedAreas = useMemo(\n () =>\n fetchedAreas != null\n ? [\n { value: '', label: t('table.remove') },\n ...fetchedAreas.map(el => ({\n value: el.id,\n label: el.name ?? el.id\n }))\n ]\n : [],\n [fetchedAreas, t]\n )\n\n const memoFetchedAreasMultiple = useMemo(\n () =>\n fetchedAreas != null\n ? [\n ...fetchedAreas.map(el => ({\n value: el.id,\n label: el.name\n }))\n ]\n : [],\n [fetchedAreas]\n )\n\n const memoFilteredGateways = useMemo(\n () =>\n filteredGateways != null\n ? [\n { value: '', label: t('table.remove') },\n ...filteredGateways.map(el => ({\n value: el.id,\n label: el.uid ?? el.id\n }))\n ]\n : [],\n [filteredGateways, t]\n )\n\n const memoGatewaysTypeOptions = useMemo(\n () =>\n gatewaysTypeOptions != null\n ? gatewaysTypeOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n }))\n : [],\n [gatewaysTypeOptions, t]\n )\n\n const memoAvailableSpots = useMemo(\n () =>\n availableSpots != null\n ? [\n { value: '', label: t('table.remove') },\n ...availableSpots.map(el => ({\n value: el.id,\n label: el.uid ?? el.id\n }))\n ]\n : [],\n [availableSpots, t]\n )\n\n const memoAvailableSensors = useMemo(\n () =>\n availableSensors != null\n ? availableSensors.map(el => ({\n value: el.id,\n label: el.uid ?? el.id\n }))\n : [],\n [availableSensors]\n )\n\n const startEditing = useCallback(() => setIsEditing(true), [setIsEditing])\n\n const cancelEditing = useCallback(() => setIsEditing(false), [setIsEditing])\n\n const goBack = useCallback(() => {\n reset()\n setHardwareInDetail(null)\n }, [reset, setHardwareInDetail])\n\n return (\n <>\n \n {form == null && <>{memoizedLoadingTable}>}\n {type === 'sensor' && form != null && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n setSpotsOpen(false)}\n onOpen={() => setSpotsOpen(true)}\n newButton={memoNewButton}\n error={\n submitState.hasSubmitted &&\n (form?.spot?.message != null || !!checkIfError('spot'))\n }\n helperText={helperTextGenerator('spot')}\n id='spot' // OBRIGATORIO POR CAUSA DA LABEL/\n disabled={!(isEditing && canEdit(fetchedHardware, 'spot', type))}\n isEditing={!!isEditing}\n />\n >\n )}\n {type === 'gateway' && form != null && (\n <>\n \n \n \n {}}\n label={t('table.area')}\n options={memoFetchedAreas}\n error={\n submitState.hasSubmitted &&\n (form?.area?.message != null || !!checkIfError('area'))\n }\n helperText={helperTextGenerator('area')}\n id='area' // OBRIGATORIO POR CAUSA DA LABEL/\n disabled={!(isEditing && canEdit(fetchedHardware, 'area', type))}\n isEditing={!!isEditing}\n />\n \n \n \n >\n )}\n {type === 'panel' && form != null && (\n <>\n \n \n \n \n el?.id ?? el) ?? []}\n onChange={memoHandleChangeValue('area')}\n label={t('table.area')}\n options={memoFetchedAreasMultiple}\n error={\n submitState.hasSubmitted &&\n (form?.area?.message != null || !!checkIfError('area'))\n }\n multiple\n helperText={helperTextGenerator('area')}\n id='area' // OBRIGATORIO POR CAUSA DA LABEL/\n disabled={!(isEditing && canEdit(fetchedHardware, 'area', type))}\n isEditing={!!isEditing}\n />\n >\n )}\n {type === 'repeater' && form != null && (\n <>\n \n \n \n >\n )}\n \n\n \n {isEditing ? (\n <>\n \n {t('cancel')}\n \n {responsiveHandlers.isDesktop && (\n <>\n \n \n \n >\n )}\n \n {t('submit')}\n \n >\n ) : (\n <>\n \n {t('assets.back')}\n \n {responsiveHandlers.isDesktop && (\n <>\n \n \n >\n )}\n {hasCRUDPermission && canDelete ? (\n \n {t('assets.delete')}\n \n ) : (\n responsiveHandlers.isDesktop && \n )}\n {hasCRUDPermission && (\n \n {t('assets.edit')}\n \n )}\n >\n )}\n \n {isEditing && newSpotOpen && (\n \n )}\n \n >\n )\n})\n\nconst ActionsWrapper = styled.div`\n display: grid;\n margin: 1.5rem 0 0;\n\n grid-template-columns: minmax(10rem, 1fr);\n row-gap: 1rem;\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(5, minmax(12.375rem, 1fr));\n column-gap: 1.5rem;\n margin: 2.5rem 0 0;\n\n\n ${props =>\n props.isEditing &&\n css`\n grid-template-columns: repeat(5, minmax(12.375rem, 1fr));\n `}\n`}\n`\n\nconst BlankSpace = styled.div`\n grid-column: span 1;\n`\n\nconst DetailsWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n flex: 0 0 auto;\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(4, minmax(0, 1fr));\n column-gap: 0.75rem;\n\n\n`}\n`\n\nconst NewButtonWrapper = styled.div`\n width: 100%;\n padding: 0.5rem 1.5rem;\n background-color: var(--white-color);\n position: sticky;\n top: 0rem;\n z-index: 10;\n display: flex;\n margin-top: -0.5rem;\n\n &:focus {\n outline: none;\n }\n`\n\nconst MapHelperText = styled.p`\n color: var(--primary-color);\n font-size: 0.875rem;\n font-style: italic;\n letter-spacing: 0;\n line-height: 1em;\n\n margin: 0.5rem 0 0;\n\n ${props =>\n props.error &&\n css`\n color: var(--error-color);\n `}\n`\n","import axios from 'axios'\n\nimport { BASE_API_URL, NOMINATIM_BASE_URL, NOMINATIM_OPTIONS } from 'config'\nconst HARDWARE_URL = BASE_API_URL + '/assets/'\nconst AREAS_SEARCH_URL = BASE_API_URL + '/areas/search/'\nconst ASSETS_SEARCH_URL = BASE_API_URL + '/assets/search/'\nconst AREAS_URL = BASE_API_URL + '/areas/'\nconst GATEWAYS_URL = BASE_API_URL + '/gateways/'\n\nconst SENSOR_CSV_URL = BASE_API_URL + '/sensors/csv/'\nconst GW_CSV_URL = BASE_API_URL + '/gateways/csv/'\nconst PANEL_CSV_ULR = BASE_API_URL + '/panels/csv/'\n\nconst NOMINATIM_SEARCH_URL = NOMINATIM_BASE_URL + '/search'\n\nconst logic = {\n getHardware: options => {\n return Promise.resolve().then(() => {\n return axios.get(HARDWARE_URL, {\n ...options\n })\n })\n },\n fetchAreasOptions: options => {\n return Promise.resolve().then(() => axios.get(AREAS_SEARCH_URL, options))\n },\n fetchAssetsOptions: options => {\n return Promise.resolve().then(() => axios.get(ASSETS_SEARCH_URL, options))\n },\n fetchAreasAndGateways: () =>\n Promise.all([axios.get(AREAS_URL), axios.get(GATEWAYS_URL)]),\n fetchLocationOptions: options =>\n Promise.resolve().then(() =>\n axios.get(NOMINATIM_SEARCH_URL, {\n ...options,\n params: {\n ...options.params,\n ...NOMINATIM_OPTIONS\n }\n })\n ),\n uploadCSV: (options, type) =>\n Promise.resolve().then(() => {\n let finalUrl = null\n if (type === 'sensor') {\n finalUrl = SENSOR_CSV_URL\n } else if (type === 'gateway') {\n finalUrl = GW_CSV_URL\n } else if (type === 'panel') {\n finalUrl = PANEL_CSV_ULR\n }\n if (finalUrl != null) {\n return axios.post(finalUrl, options, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n }\n return new Error()\n }),\n getHardwareDetails: (id, type) =>\n Promise.resolve().then(() => axios.get(`${BASE_API_URL}/${type}/${id}/`))\n}\n\nexport default logic\n","import React, {\n useEffect,\n useState,\n useRef,\n useContext,\n memo,\n useMemo,\n useCallback\n} from 'react'\nimport styled from 'styled-components'\nimport { AUTOMATIC_EDIT_PERMISSIONS } from 'config'\n\nimport Badge from '@material-ui/core/Badge'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport { Context as SocketContext } from 'providers/SocketProvider/socketProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport { useTranslation } from 'react-i18next'\nimport {\n useHistory,\n useRouteMatch,\n Route,\n Switch,\n Redirect\n} from 'react-router-dom'\n\nimport StyledBreadCrumb from 'components/StyledBreadCrumb'\nimport StyledButton from 'components/StyledButton'\nimport StyledAutoComplete from 'components/StyledAutoComplete'\nimport StyledSelect from 'components/StyledSelect'\nimport StyledMenu from 'components/StyledMenu'\nimport toast from 'components/StyledToast'\n\nimport MapContainer from 'containers/MapContainer'\nimport HardwareList from 'containers/HardwareList'\nimport HardwareDetails from 'containers/HardwareDetails'\nimport FiltersModal from 'containers/FiltersModal'\n\nimport UploadIcon from 'icons/UploadIcon'\nimport FilterIcon from 'icons/FilterIcon'\n\nimport hasCRUDPermissions from 'utils/hasCRUDPermissions'\n\nimport columns from './columns'\nimport logic from './logic'\nimport {\n typeOptions,\n monitoringOptions,\n countingTypeOptions,\n statusOptions,\n allowedOptions,\n gatewaysTypeOptions\n} from 'utils/options'\n\nconst Hardware = ({ children, ...props }) => {\n const { actions, store } = useContext(AuthContext)\n const { store: wsStore } = useContext(SocketContext)\n\n const { responsiveHandlers } = props\n\n const { t } = useTranslation()\n const { path } = useRouteMatch()\n const history = useHistory()\n\n const [isEditing, setIsEditing] = useState(false)\n const [open, setOpen] = useState(false)\n const [geometry, setGeometry] = useState(null)\n const [fetchedHardware, setFetchedHardware] = useState(null)\n\n const [mapHelperText, setMapHelperText] = useState(null)\n\n const [fetchedAreasAndGateways, setfetchedAreasAndGateways] = useState({\n areas: [],\n gateways: []\n })\n\n const [hardwareState, setHardwareState] = useState({\n hardwareCount: 0,\n hardware: [],\n loading: true\n })\n\n const memoColumns = useMemo(() => columns, [])\n const memoData = useMemo(() => hardwareState?.hardware, [\n hardwareState?.hardware\n ])\n const defaultFilter = useMemo(\n () => ({\n uid: '',\n name: '',\n type: '',\n monitoring_type: '',\n counting_type: '',\n status: '',\n area: ''\n }),\n []\n )\n\n const [filters, setFilters] = useState(defaultFilter)\n const [pagination, setPagination] = useState({ offset: 1, limit: 10 })\n const [triggerSet, setTriggerSet] = useState(false)\n\n const [title, setTitle] = useState('')\n\n const locationInputTimeoutRef = useRef(null)\n const [locationOptions, setLocationOptions] = useState([])\n const [locationTextInput, setLocationTextInput] = useState('')\n const [locationSelected, setLocationSelected] = useState(null)\n\n const [menuAnchorEl, setMenuAnchorEl] = useState(null)\n\n const [uploadType, setUploadType] = useState(null)\n const hiddenFileInput = useRef(null)\n\n const [submitState, setSubmitState] = useState({\n submitting: false,\n hasSubmitted: false\n })\n\n const uidTextInputTimeoutRef = useRef(null)\n const nameTextInputTimeoutRef = useRef(null)\n const areaTextInputTimeoutRef = useRef(null)\n\n const [textInput, setTextInput] = useState({\n uid: '',\n name: '',\n area: ''\n })\n const [searchOptions, setSeachOptions] = useState({\n uid: [],\n name: [],\n area: []\n })\n\n const [hardwareInDetail, setHardwareInDetail] = useState(null)\n const [update, setUpdate] = useState(false)\n\n const [openFilters, setOpenFilters] = useState(false)\n\n const onFilterChange = useCallback(\n (key, value) => {\n setFilters({\n ...filters,\n [key]: value\n })\n },\n [filters]\n )\n\n const handleAutocompleteInputs = useCallback(\n (property, value) => {\n setTextInput({\n ...textInput,\n [property]: value\n })\n onFilterChange(property, value)\n },\n [textInput, onFilterChange]\n )\n\n useEffect(() => {\n if (locationInputTimeoutRef.current !== null) {\n clearTimeout(locationInputTimeoutRef.current)\n }\n locationInputTimeoutRef.current = setTimeout(() => {\n locationInputTimeoutRef.current = null\n if (logic.fetchLocationOptions) {\n logic\n .fetchLocationOptions({\n params: { q: locationTextInput, format: 'jsonv2' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setLocationOptions(data)\n } else {\n setLocationOptions([])\n }\n })\n .catch(err => {\n console.log({ err })\n setLocationOptions([])\n })\n }\n }, 500)\n }, [locationTextInput])\n\n const handleSetHardwareInDetail = useCallback(\n (hardware, deviceType) => {\n if (\n hardware != null &&\n hardware.id != null &&\n (hardware.deviceType != null || deviceType != null)\n ) {\n const type = hardware.deviceType || deviceType\n setHardwareInDetail(hardware)\n history.push(`${path}${type}/${hardware.id}/`)\n } else {\n setHardwareInDetail(null)\n setFetchedHardware(null)\n setIsEditing(false)\n setTriggerSet(true)\n history.push(`${path}`)\n }\n },\n [history, path]\n )\n\n const resetParent = useCallback(() => {\n setLocationTextInput('')\n setLocationSelected(null)\n setLocationOptions([])\n }, [])\n\n useEffect(() => {\n logic\n .fetchAreasAndGateways()\n .then(response => {\n const [areasResults, gatewayResults] = response\n if (\n areasResults.data != null &&\n areasResults.data.results != null &&\n gatewayResults.data != null &&\n gatewayResults.data.results\n ) {\n setfetchedAreasAndGateways({\n areas: [...areasResults.data.results],\n gateways: [...gatewayResults.data.results]\n })\n }\n })\n .catch(err => {\n console.log({ err })\n setfetchedAreasAndGateways({\n areas: [],\n gateways: []\n })\n // ERROR\n })\n }, [hardwareInDetail])\n\n useEffect(() => {\n if (areaTextInputTimeoutRef.current !== null) {\n clearTimeout(areaTextInputTimeoutRef.current)\n }\n\n areaTextInputTimeoutRef.current = setTimeout(() => {\n areaTextInputTimeoutRef.current = null\n logic\n .fetchAreasOptions({\n params: { name: textInput.area !== '' ? textInput.area : 'all' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(searchOptions => ({\n ...searchOptions,\n area: data.results\n }))\n } else {\n setSeachOptions(searchOptions => ({ ...searchOptions, area: [] }))\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions(searchOptions => ({ ...searchOptions, area: [] }))\n })\n }, 500)\n }, [textInput.area])\n\n useEffect(() => {\n if (uidTextInputTimeoutRef.current !== null) {\n clearTimeout(uidTextInputTimeoutRef.current)\n }\n\n uidTextInputTimeoutRef.current = setTimeout(() => {\n uidTextInputTimeoutRef.current = null\n logic\n .fetchAssetsOptions({\n params: { uid: textInput.uid !== '' ? textInput.uid : 'all' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(searchOptions => ({\n ...searchOptions,\n uid: data.results\n }))\n } else {\n setSeachOptions(searchOptions => ({ ...searchOptions, uid: [] }))\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions(searchOptions => ({ ...searchOptions, uid: [] }))\n })\n }, 500)\n }, [textInput.uid])\n\n useEffect(() => {\n if (nameTextInputTimeoutRef.current !== null) {\n clearTimeout(nameTextInputTimeoutRef.current)\n }\n\n nameTextInputTimeoutRef.current = setTimeout(() => {\n nameTextInputTimeoutRef.current = null\n logic\n .fetchAssetsOptions({\n params: { name: textInput.name !== '' ? textInput.name : 'all' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(searchOptions => ({\n ...searchOptions,\n name: data.results\n }))\n } else {\n setSeachOptions(searchOptions => ({ ...searchOptions, name: [] }))\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions(searchOptions => ({ ...searchOptions, name: [] }))\n })\n }, 500)\n }, [textInput.name])\n\n useEffect(() => {\n if (hardwareInDetail == null) {\n fetchHardware()\n setPagination(() => ({ offset: 1, limit: 10 }))\n }\n // eslint-disable-next-line\n }, [triggerSet])\n\n const fetchHardwareAndUpdate = useCallback(\n (id, type) => {\n let urlType\n switch (type) {\n case 'sensor':\n urlType = 'sensors'\n break\n case 'gateway':\n urlType = 'gateways'\n break\n case 'informationpanel':\n urlType = 'panels'\n break\n default:\n urlType = null\n break\n }\n if (urlType != null) {\n logic\n .getHardwareDetails(id, urlType)\n .then(response => {\n if (response.data) {\n const { data } = response\n const hardwareCopy = JSON.parse(\n JSON.stringify(hardwareState.hardware)\n )\n const found = hardwareCopy.findIndex(el => el.id === id)\n if (found >= 0) {\n hardwareCopy[found] = data\n setHardwareState({\n ...hardwareState,\n hardware: hardwareCopy\n })\n }\n }\n })\n .catch(err => console.log('could not update resources: ', { err }))\n }\n },\n [hardwareState]\n )\n\n const fetchHardware = useCallback(() => {\n setHardwareState({ ...hardwareState, loading: true })\n setTriggerSet(false)\n\n logic\n .getHardware({\n params: {\n ...{\n limit: 'max'\n },\n ...filters\n }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setHardwareState({\n hardwareCount: data.count,\n hardware: data.results,\n loading: false\n })\n } else {\n setHardwareState({\n hardwareCount: 0,\n hardware: [],\n loading: false\n })\n }\n })\n .catch(err => {\n console.log({ err })\n setHardwareState({ hardwareCount: 0, hardware: [], loading: false })\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }, [filters, actions, hardwareState])\n\n const canEdit = useCallback((asset, property, deviceType) => {\n if (asset != null) {\n if (asset.deviceType === 'sensor' || deviceType === 'sensor') {\n if (property === 'number') {\n return false\n }\n }\n if (asset.mode === 'automatic') {\n const type = asset.deviceType || deviceType\n return AUTOMATIC_EDIT_PERMISSIONS?.[type]?.includes(property)\n }\n return true\n }\n return false\n }, [])\n\n const resetFilters = useCallback(() => {\n setFilters(defaultFilter)\n setTextInput({\n uid: '',\n name: '',\n area: ''\n })\n setTriggerSet(true)\n }, [defaultFilter])\n\n const handleMenuOpen = useCallback(event => {\n setMenuAnchorEl(event.currentTarget)\n }, [])\n\n const handleMenuClose = useCallback(() => {\n setMenuAnchorEl(null)\n }, [])\n\n const handleMenuClick = useCallback(\n clickType => {\n setUploadType(clickType)\n if (hiddenFileInput != null && hiddenFileInput.current != null) {\n hiddenFileInput.current.click()\n handleMenuClose()\n }\n },\n [hiddenFileInput, handleMenuClose]\n )\n\n const handleChange = useCallback(\n async event => {\n const fileUploaded = await event.target.files[0]\n if (fileUploaded != null && uploadType != null) {\n setSubmitState({\n submitting: true,\n hasSubmitted: true\n })\n setHardwareState({ ...hardwareState, loading: true })\n // eslint-disable-next-line\n const formData = new FormData()\n formData.append('file', fileUploaded)\n await logic\n .uploadCSV(formData, uploadType)\n .then(response => {\n setSubmitState({\n ...submitState,\n submitting: false\n })\n if (response.status === 200) {\n toast.success(t('assets.create_success'))\n }\n })\n .catch(err => {\n console.log({ err })\n setSubmitState({\n ...submitState,\n submitting: false\n })\n toast.error(t('assets.create_error'))\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n .finally(() => setTriggerSet(true))\n }\n },\n [uploadType, hardwareState, submitState, actions, t]\n )\n\n const handleWSMessages = useCallback(\n msg => {\n if (\n msg != null &&\n (msg.sender === 'informationpanel' ||\n msg.sender === 'sensor' ||\n msg.sender === 'gateway')\n ) {\n if (\n hardwareInDetail != null &&\n msg?.sender === hardwareInDetail.deviceType &&\n msg?.content?.id === hardwareInDetail.id\n ) {\n if (msg.type === 'update') {\n setUpdate(!update)\n } else if (msg.type === 'delete' && msg.content != null) {\n setHardwareInDetail(null)\n }\n } else if (hardwareInDetail == null) {\n if (msg.type === 'new' || msg.type === 'delete') {\n fetchHardware()\n } else if (msg.type === 'update' && msg?.content?.id) {\n fetchHardwareAndUpdate(msg.content.id, msg.sender)\n } else {\n fetchHardware()\n }\n }\n }\n },\n [fetchHardware, fetchHardwareAndUpdate, hardwareInDetail, update]\n )\n\n useEffect(() => {\n if (wsStore.message != null) {\n handleWSMessages(wsStore.message)\n }\n // eslint-disable-next-line\n }, [wsStore.message])\n\n const hasCRUDPermission = hasCRUDPermissions(store.user)\n\n const memoStatusOptions = useMemo(\n () =>\n statusOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })),\n [t]\n )\n\n const memoTypeOptions = useMemo(\n () =>\n typeOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n })),\n [t]\n )\n\n const memoHandleAutocompleteInputs = useCallback(\n name => e => handleAutocompleteInputs(name, e),\n [handleAutocompleteInputs]\n )\n\n const memoOnFilterChange = useCallback(\n name => (e, newValue) => onFilterChange(name, newValue),\n [onFilterChange]\n )\n\n const memoOnFilterChangeValue = useCallback(\n name => e => onFilterChange(name, e?.target?.value),\n [onFilterChange]\n )\n const filtersInputs = useMemo(\n () => (\n \n \n \n \n \n \n \n ),\n [\n textInput,\n filters,\n searchOptions.area,\n searchOptions.name,\n searchOptions.uid,\n t,\n memoStatusOptions,\n memoTypeOptions,\n memoOnFilterChangeValue,\n memoHandleAutocompleteInputs,\n memoOnFilterChange\n ]\n )\n\n const handleReset = useCallback(() => {\n resetFilters()\n setOpenFilters(false)\n }, [resetFilters])\n\n const handleApply = useCallback(() => {\n setTriggerSet(true)\n setOpenFilters(false)\n }, [])\n\n const filtersButtons = useMemo(\n () => (\n \n \n {t('table.reset')}\n \n \n {t('table.apply')}\n \n \n ),\n [submitState.submitting, t, handleApply, handleReset]\n )\n\n const removeHardwareInDetail = useCallback(\n () => handleSetHardwareInDetail(null),\n [handleSetHardwareInDetail]\n )\n\n const breadCrumbItems = useMemo(\n () => [\n {\n path: path,\n label: 'sections.assets',\n onClick: removeHardwareInDetail\n },\n {\n path: '',\n label: `${t(title)} ${\n hardwareInDetail != null ? ` - ${hardwareInDetail.uid}` : ''\n }`\n }\n ],\n [hardwareInDetail, path, title, removeHardwareInDetail, t]\n )\n\n const openNewPopup = useCallback(() => setOpen(true), [])\n\n const mapData = useMemo(\n () =>\n hardwareInDetail != null && fetchedHardware != null\n ? fetchedHardware?.geometry != null\n ? [fetchedHardware]\n : null\n : memoData,\n [hardwareInDetail, fetchedHardware, memoData]\n )\n\n const showSpots = useMemo(\n () =>\n hardwareInDetail != null &&\n fetchedHardware != null &&\n fetchedHardware?.deviceType != null &&\n fetchedHardware?.deviceType === 'sensor',\n [hardwareInDetail, fetchedHardware]\n )\n\n const showSensors = useMemo(\n () =>\n hardwareInDetail != null &&\n fetchedHardware != null &&\n fetchedHardware?.deviceType != null &&\n fetchedHardware?.deviceType === 'gateway',\n [hardwareInDetail, fetchedHardware]\n )\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [locationSelected.boundingbox[2], locationSelected.boundingbox[0]],\n [locationSelected.boundingbox[3], locationSelected.boundingbox[1]]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n const onSearchChange = useCallback(event => setLocationTextInput(event), [])\n const onSearchInputChange = useCallback(\n (event, newValue) => setLocationSelected(newValue),\n []\n )\n\n const getOptionLabel = useCallback(option => option.displayName, [])\n\n const mapSearchProps = useMemo(\n () => ({\n value: locationTextInput,\n onChange: onSearchChange,\n inputValue: locationSelected,\n onInputChange: onSearchInputChange,\n options: locationOptions,\n label: t('map.search_location'),\n getOptionLabel: getOptionLabel\n }),\n [\n locationTextInput,\n locationSelected,\n getOptionLabel,\n locationOptions,\n onSearchChange,\n onSearchInputChange,\n t\n ]\n )\n\n const memoSetTriggerSet = useCallback(() => setTriggerSet(true), [])\n\n const onCloseFilters = useCallback(() => setOpenFilters(false), [])\n const onOpenFilters = useCallback(() => setOpenFilters(true), [])\n\n const downloadTypeOptions = useMemo(\n () => [\n { label: t('assets.sensor'), value: 'sensor' },\n { label: t('assets.gateway'), value: 'gateway' },\n { label: t('assets.panel'), value: 'panel' },\n { label: t('assets.repeater'), value: 'repeater' }\n ],\n [t]\n )\n\n const isDrawAvailable = useMemo(() => isEditing && canEdit('geometry'), [\n isEditing,\n canEdit\n ])\n\n return (\n \n \n \n {hardwareInDetail == null && hasCRUDPermission && (\n \n \n {t('assets.new')}\n \n \n \n \n \n \n {!responsiveHandlers.isDesktop && (\n \n \n \n \n \n )}\n \n )}\n \n {hardwareInDetail == null && responsiveHandlers.isDesktop && (\n \n {[filtersInputs, filtersButtons]}\n \n )}\n \n \n \n \n {isDrawAvailable && <>{mapHelperText}>}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default memo(withResponsive(Hardware))\n\nconst Wrapper = styled.div`\n padding: 1.5rem;\n display: flex;\n flex-direction: column;\n overflow-y: scroll;\n height: 100%;\n\n ${({ theme }) => theme.smallDesktop`\n padding: 1.5rem 2rem;\n `}\n`\n\nconst MapWrapper = styled.div`\n width: 100%;\n min-height: 22rem;\n height: 100%;\n`\n\nconst MapAndTextWrapper = styled.div`\n margin: 1.5rem 0;\n /* height: calc(22rem + 0.875rem + 0.5rem); */\n /* 100vh - navbar - wrapper_padding - breadcrumb_height - filters_height+margin - this.margin - table_maxheight - pagination */\n min-height: 22rem;\n\n height: calc(\n 100vh - 3.75rem - 4rem - 4.125rem - 4rem - 3rem - 25rem - 3.75rem\n );\n flex: 0 0 auto;\n`\n\nconst BreadCrumbRow = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n row-gap: 1rem;\n flex: 0 0 auto;\n\n ${({ theme }) => theme.smallDesktop`\n display: flex;\n justify-content: space-between;\n align-items: center;\n min-height: 2.5rem;\n `}\n`\nconst ButtonWrapper = styled.div`\n display: grid;\n grid-template-columns: 10rem 2.5rem 2.5rem;\n column-gap: 0.5rem;\n margin-right: auto;\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: 14.625rem 2.5rem;\n column-gap: 0.5rem;\n margin: 0;\n `}\n`\n\nconst FiltersWrapper = styled.div`\n margin: 1.5rem 0 0rem;\n`\n\nconst FiltersRow = styled.div`\n display: none;\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));\n display: grid;\n column-gap: 1rem;\n row-gap: 1rem;\n\n `}\n`\n","import moment from 'moment'\nimport { DATETIME_FORMAT } from 'config'\n\nconst columns = [\n {\n key: 'id',\n label: 'table.id'\n },\n {\n key: 'area.name',\n label: 'table.area'\n },\n {\n key: 'area.monitoringType',\n label: 'table.monitoring_type',\n render: ({ t, ...element }) => t(`table.${element.area.monitoringType}`)\n },\n {\n key: 'spotType',\n label: 'table.spot_type',\n render: ({ t, ...element }) => t(`table.${element.spotType}`)\n },\n {\n key: 'occupation',\n label: 'table.occupancy_rate'\n },\n {\n key: 'unknownSpots',\n label: 'table.unknown_spots'\n },\n {\n key: 'createdAt',\n label: 'table.date',\n render: element => moment(element.createdAt).format(DATETIME_FORMAT)\n }\n]\n\nexport default columns\n","import axios from 'axios'\n\nimport { BASE_API_URL } from 'config'\nconst EVENTS_URL = BASE_API_URL + '/events/'\n\nconst logic = {\n getEvents: options => {\n return Promise.resolve().then(() => {\n return axios.get(EVENTS_URL, options)\n })\n },\n getEventDetails: id =>\n Promise.resolve().then(() => {\n return axios.get(EVENTS_URL + `${id}/`)\n })\n}\n\nexport default logic\n","\nimport moment from 'moment'\n\nconst getModifiedEndDateMoment = (interval, startDate) => {\n let endDate = moment(startDate)\n\n switch (interval) {\n case 'year':\n endDate = moment(endDate)\n .endOf('year')\n .isSameOrBefore(moment())\n ? moment(endDate).endOf('year')\n : moment()\n break\n case 'month':\n endDate = moment(endDate)\n .endOf('month')\n .isSameOrBefore(moment())\n ? moment(endDate).endOf('month')\n : moment()\n break\n case 'day':\n endDate = moment(endDate).isSameOrBefore(moment())\n ? moment(endDate)\n : moment()\n break\n default:\n endDate = moment(endDate).isSameOrBefore(moment())\n ? moment(endDate)\n : moment()\n break\n }\n return endDate\n}\n\nexport default getModifiedEndDateMoment\n","/**\n * StyledSelect Component\n * Please write a description\n *\n * @author Your Name \n */\nimport React from 'react'\nimport styled, { css } from 'styled-components'\n\nconst AnimatedArrow = props => (\n \n \n \n \n \n)\n\nconst AnimatedArrowWrapper = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-content: center;\n height: ${props => props.height};\n width: ${props => props.width};\n transform: ${({ transform }) => transform || ''};\n transition: 0.5s all;\n`\n\nclass ToggleFilter extends React.Component {\n constructor (props) {\n super(props)\n this.state = {\n open: false\n }\n this.wrapperRef = React.createRef()\n }\n\n componentDidUpdate (oldProps) {\n if (this.props.variableToWatch !== oldProps.variableToWatch) {\n this.setState({ open: false })\n }\n }\n\n componentDidMount () {\n document.addEventListener('mousedown', this.handleClickOutside)\n }\n\n componentWillUnmount () {\n document.removeEventListener('mousedown', this.handleClickOutside)\n }\n\n handleClickOutside = event => {\n if (\n this.wrapperRef &&\n !this.wrapperRef.current.contains(event.target) &&\n this.state.open\n ) {\n this.setState({ open: false })\n }\n };\n\n render () {\n const { open } = this.state\n const { text, children, active } = this.props\n // console.log(active)\n return (\n \n this.setState({ open: !open })}\n >\n {text}\n \n \n \n \n {children}\n \n \n \n )\n }\n}\n\nexport default ToggleFilter\n\nconst Wrapper = styled.div`\n position: relative;\n\n z-index: 1000;\n user-select: none;\n`\n\nconst ReferenceWrapper = styled.div`\n position: absolute;\n box-shadow: 0px 0px 1.5rem 0px rgba(204, 204, 204, 1);\n top: 3.5rem;\n left: 0;\n ${({ theme }) => theme.smallDesktop`\n right: 0px;\n left: auto;\n `}\n`\n\nconst DynamicWrapper = styled.div`\n height: auto;\n overflow: hidden;\n position: relative;\n right: 0;\n`\n\nconst ToggleButtonWrapper = styled.div`\n height: 2.375rem;\n padding: 0.5rem 2rem 0.5rem 0.875rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: var(--secondary-color);\n transition: border-color 0.5s, color 0.5s;\n margin: ${({ margin }) => margin};\n background-color: var(--white-color);\n border: 1px solid var(--platinium-gray-color);\n cursor: pointer;\n\n &:hover,\n &:focus,\n &:active {\n border: 1px solid rgba(0, 0, 0, 0.87);\n }\n\n ${props =>\n props.open &&\n css`\n border: 2px solid var(--primary-color);\n &:hover,\n &:focus,\n &:active {\n border: 2px solid var(--primary-color);\n }\n `}\n`\n\nconst ToggleText = styled.span`\n color: var(--platinium-gray-color);\n font-size: 0.875rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1rem;\n text-transform: uppercase;\n\n &:focus,\n &:active {\n color: var(--primary-color);\n }\n\n ${props =>\n props.active &&\n css`\n color: var(--breadcrumb-gray-color);\n `}\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport moment from 'moment'\nimport { DATETIME_FORMAT } from 'config'\n\nexport default ({ children, ...props }) => {\n const { element, setInDetail } = props\n const { t } = useTranslation()\n\n return (\n setInDetail(element)}>\n {element.id}\n {element.occupation}%\n {element.area.name}\n \n\n {t('table.monitoring_type')}\n {t(`table.${element.area.monitoringType}`)}\n\n {t('table.spot_type')}\n {t(`table.${element.spotType}`)}\n\n {t('table.unknown_spots')}\n {element.unknownSpots}\n\n {t('table.date')}\n {moment(element.createdAt).format(DATETIME_FORMAT)}\n \n )\n}\n\nconst Wrapper = styled.div`\n background: white;\n padding: 1rem 0;\n display: grid;\n grid-template-columns: 5fr 1fr;\n grid-template-rows: auto auto auto;\n column-gap: 8px;\n\n border-bottom: 1px solid var(--breadcrumb-gray-color);\n\n color: var(--text-color);\n font-size: 0.875rem;\n letter-spacing: 0;\n line-height: 1em;\n font-family: var(--primary-font);\n`\n\nconst Name = styled.h1`\n margin-bottom: 0.25rem;\n\n font-size: 0.75rem;\n color: var(--breadcrumb-gray-color);\n`\n\nconst Uid = styled.p`\n font-size: 1.5rem;\n color: var(--primary-color);\n margin-bottom: 1rem;\n`\n\nconst Label = styled.p`\n font-weight: 700;\n font-size: 0.875rem;\n`\nconst Value = styled.p`\n font-size: 0.75rem;\n color: var(--breadcrumb-gray-color);\n text-align: right;\n`\n\nconst Occupancy = styled.p`\n font-size: 1.5rem;\n grid-column: 2/3;\n grid-row: 1/4;\n text-align: right;\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport Datetime from 'react-datetime'\nimport { useTranslation } from 'react-i18next'\nimport { isMobile } from 'react-device-detect'\nimport { API_DATE_FORMAT, DATE_FORMAT } from 'config'\nimport moment from 'moment'\n\nexport default ({ children, ...props }) => {\n const { i18n } = useTranslation()\n if (isMobile) {\n return (\n \n \n {moment(props.value).format(DATE_FORMAT)}\n \n \n event.target.value != null &&\n event.target.value !== '' &&\n props.onChange(moment(event.target.value))}\n type='date'\n />\n \n )\n }\n return (\n \n )\n}\n\nconst Wrapper = styled(Datetime)`\n width: 15.625rem;\n margin: 1rem;\n height: 100%;\n\n input {\n width: 100%;\n padding: 10px;\n height: 2.375rem;\n border-radius: 0;\n border: var(--table-border);\n\n &:active, &:focus{\n border: 2px solid var(--primary-color);\n outline: none;\n }\n }\n\n .rdtPicker {\n width: 100%;\n margin-top: 10px;\n th {\n height: 33px;\n border: 0px;\n }\n }\n\n .rdtMonth {\n transition: 0s all;\n :hover {\n background-color: var(--primary-color) !important;\n border: 1px solid var(--primary-color) !important;\n color: ${props => props.theme.white};\n }\n &.rdtActive {\n background-color: var(--primary-color) !important;\n }\n }\n .rdtYear {\n transition: 0s all;\n :hover {\n background-color: var(--primary-color) !important;\n border: 1px solid var(--primary-color) !important;\n color: ${props => props.theme.white};\n }\n &.rdtActive {\n background-color: var(--primary-color) !important;\n }\n }\n .rdtDay {\n transition: 0s all;\n :hover {\n background-color: var(--primary-color) !important;\n border: 1px solid var(--primary-color) !important;\n color: ${props => props.theme.white};\n }\n &.rdtActive {\n background-color: var(--primary-color) !important;\n }\n }\n &.rdtOpen .rdtPicker{\n position: relative;\n }\n`\n\nconst MobileWrapper = styled.div`\n width: 100%;\n position: relative;\n background: transparent;\n display: flex;\n align-items: center;\n margin: 1rem 0;\n`\n\nconst MobileCalendarPick = styled.input`\n opacity: 0;\n width: 100%;\n`\n\nconst MobileInputCalendarView = styled.span`\n width: 100%;\n position: absolute;\n display: flex;\n align-items: center;\n -webkit-appearance: none;\n\n padding: 0 0.5rem;\n background-color: transparent;\n border: none;\n font-size: 0.875rem;\n line-height: 1em;\n\n height: 2rem;\n border-radius: 0.25rem;\n border: var(--table-border);\n\n &:focus,\n &:active {\n outline: none;\n border: var(--table-border) !important;\n }\n &::-webkit-inner-spin-button,\n &::-webkit-calendar-picker-indicator {\n display: none;\n -webkit-appearance: none;\n }\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport moment from 'moment'\nimport { useTranslation } from 'react-i18next'\nimport { API_DATE_FORMAT } from 'config'\n\nimport StyledDatePicker from 'components/StyledDateTime'\n\nconst getModifiedEndDate = (interval, startDate) => {\n let endDate = moment(startDate)\n\n switch (interval) {\n case 'year':\n endDate = moment(endDate)\n .endOf('year')\n .isSameOrBefore(moment())\n ? moment(endDate).endOf('year')\n : moment()\n break\n case 'month':\n endDate = moment(\n endDate.format('YYYY-MM-') + 28,\n 'YYYY-MM-DD'\n ).isSameOrBefore(moment())\n ? moment(endDate.format('YYYY-MM-') + 28, 'YYYY-MM-DD')\n : moment()\n break\n case 'day':\n endDate = moment(endDate).isSameOrBefore(moment())\n ? moment(endDate)\n : moment()\n break\n default:\n endDate = moment(endDate).isSameOrBefore(moment())\n ? moment(endDate)\n : moment()\n break\n }\n return endDate\n}\n\nconst getModifiedStartDate = (interval, startDate) => {\n const modifiedStartDate = moment(startDate)\n\n switch (interval) {\n case 'year':\n modifiedStartDate.startOf('year')\n break\n case 'month':\n modifiedStartDate.startOf('month')\n break\n case 'day':\n break\n default:\n break\n }\n return modifiedStartDate\n}\n\nconst datePicker = (start, end, interval, onChangeFunction, changeBoth) => {\n let tempFormat = 'YYYY'\n const timeFormat = false\n let viewMode = 'years'\n\n switch (interval) {\n case 'year':\n tempFormat = 'YYYY'\n viewMode = 'years'\n break\n case 'month':\n tempFormat = 'YYYY-MM'\n viewMode = 'months'\n break\n case 'day':\n tempFormat = 'YYYY-MM-DD'\n viewMode = 'days'\n break\n default:\n tempFormat = 'YYYY'\n viewMode = 'years'\n break\n }\n\n return (\n <>\n \n currentDate.isSameOrBefore(end) &&\n currentDate.isSameOrBefore(moment())}\n dateFormat={tempFormat}\n timeFormat={timeFormat}\n value={moment(start)}\n viewMode={viewMode}\n open\n onChange={value => {\n if (moment(end).isBefore(moment(value))) {\n changeBoth(interval, value)\n } else {\n onChangeFunction('dateAfter', value, interval)\n }\n }}\n />\n \n currentDate.isSameOrAfter(start) &&\n currentDate.isSameOrBefore(moment())}\n dateFormat={tempFormat}\n timeFormat={timeFormat}\n viewMode={viewMode}\n open\n value={moment(end)}\n onChange={value => {\n onChangeFunction('dateBefore', moment(value), interval)\n }}\n />\n >\n )\n}\n\nexport default ({ children, ...props }) => {\n const {\n form,\n replaceForm,\n intervalOptions\n // changedForm,\n // setChangedForm\n } = props\n\n const { t } = useTranslation()\n\n const modifyFormValue = (key, value, interval) => {\n replaceForm({\n ...form,\n [key]:\n key === 'dateBefore'\n ? moment(getModifiedEndDate(interval, value)).format(API_DATE_FORMAT)\n : moment(value).format(API_DATE_FORMAT)\n })\n }\n\n const modifyBoth = (interval, value) => {\n replaceForm({\n ...form,\n dateAfter: moment(value).format(API_DATE_FORMAT),\n dateBefore: moment(getModifiedEndDate(interval, value)).format(\n API_DATE_FORMAT\n )\n })\n }\n\n const modifyIntervalValue = value => {\n replaceForm({\n ...form,\n interval: value,\n dateBefore: moment(\n getModifiedEndDate(value, moment(form.dateAfter))\n ).format(API_DATE_FORMAT),\n dateAfter: moment(\n getModifiedStartDate(value, moment(form.dateAfter))\n ).format(API_DATE_FORMAT)\n })\n }\n\n // // useEffect(() => {\n // // replaceForm({\n // // ...form\n // // })\n // // }, [form, replaceForm])\n\n // useEffect(() => {\n // if (triggerSet) {\n // console.log('trigger', {\n // ...form,\n // dateBefore: moment(\n // getModifiedEndDateFinal(form.interval, form.dateBefore)\n // ).format(API_DATE_FORMAT)\n // })\n // // replaceForm({\n // // ...form,\n // // dateBefore: moment(\n // // getModifiedEndDateFinal(form.interval, form.dateBefore)\n // // ).format(API_DATE_FORMAT)\n // // })\n // resetTriggerSet()\n // }\n // // eslint-disable-next-line\n // }, [triggerSet])\n\n return (\n \n \n \n {t('choose_interval')}:\n {intervalOptions.map(el => (\n modifyIntervalValue(el.value)}\n >\n {t(el.label)}\n \n ))}\n \n \n\n {datePicker(\n form.dateAfter,\n form.dateBefore,\n form.interval,\n modifyFormValue,\n modifyBoth\n )}\n \n )\n}\n\nconst ColumnFlexer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: auto;\n`\n\nconst Wrapper = styled.div`\n display: flex;\n background-color: white;\n flex-direction: column;\n position: relative;\n z-index: 1000;\n padding: 1.5rem;\n\n ${({ theme }) => theme.smallDesktop`\n flex-direction: row;\n\n `}\n`\n\nconst TimeOptionsWrapper = styled.div`\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n margin: 0;\n padding: 1rem;\n width: 200px;\n\n ${({ theme }) => theme.smallDesktop`\n display: flex;\n flex-direction: column;\n width: auto;\n align-items: center;\n margin: 1rem 2rem;\n `}\n`\n\nconst InfoText = styled.span`\n font-weight: 700;\n white-space: nowrap;\n margin-bottom: 1rem;\n\n grid-column: span 3;\n`\n\nconst OptionSpan = styled.span`\n color: ${props =>\n props.selected ? 'var(--white-color)' : 'var(--black-color)'};\n background-color: ${props => props.selected && 'var(--primary-color)'};\n width: 100%;\n text-align: center;\n margin: 1rem 0px;\n padding: 0.5rem;\n cursor: ${props => (props.selected ? 'not-allowed' : 'pointer')};\n\n &:hover {\n background-color: rgba(211, 211, 211, 0.25);\n }\n`\n","import React, {\n useEffect,\n useState,\n useContext,\n useRef,\n useMemo,\n useCallback\n} from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport moment from 'moment'\n\nimport { AVAILABLE_SPOT_TYPES, API_DATE_FORMAT } from 'config'\n\nimport Badge from '@material-ui/core/Badge'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport { Context as SocketContext } from 'providers/SocketProvider/socketProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport columns from './columns'\nimport logic from './logic'\n\nimport { monitoringTypeOptions, intervalOptions } from 'utils/options'\n\nimport getModifiedEndDateMoment from 'utils/getModifiedEndDateMoment'\n\nimport useWindowSize from 'hooks/useWindowSize'\n\nimport StyledBreadCrumb from 'components/StyledBreadCrumb'\nimport StyledTable from 'components/StyledTable'\nimport StyledSelect from 'components/StyledSelect'\nimport StyledSkeleton from 'components/StyledSkeleton'\nimport ToggleFilter from 'components/ToggleFilter'\nimport StyledButton from 'components/StyledButton'\nimport StyledPagination from 'components/StyledPagination'\nimport EventsTemplate from 'components/EventsTemplate'\nimport StyledMobileTable from 'components/StyledMobileTable'\n\nimport IntervalPicker from 'containers/IntervalPicker'\nimport FiltersModal from 'containers/FiltersModal'\n\nimport FilterIcon from 'icons/FilterIcon'\n\nconst removalHeight = 17.375\nconst lineHeight = 2.25\n\nexport default withResponsive(({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n const { store: wsStore } = useContext(SocketContext)\n const { responsiveHandlers } = props\n\n const defaultFilter = useMemo(\n () => ({\n area__monitoringType: '',\n spotType: '',\n dateAfter: moment()\n .startOf('month')\n .format(API_DATE_FORMAT),\n dateBefore: moment().format(API_DATE_FORMAT),\n interval: 'day'\n }),\n []\n )\n\n const { t } = useTranslation()\n\n const size = useWindowSize()\n const wrapperRef = useRef(null)\n\n const convertRemToPixels = rem => {\n if (wrapperRef != null && wrapperRef.current != null) {\n return (\n rem * parseFloat(window.getComputedStyle(wrapperRef.current).fontSize)\n )\n }\n return (\n rem *\n parseFloat(\n window.getComputedStyle(document.getElementById('events-wrapper'))\n .fontSize\n )\n )\n }\n\n const [eventsState, setEventsState] = useState({\n eventsCount: 0,\n events: []\n })\n const [filters, setFilters] = useState(defaultFilter)\n const [pagination, setPagination] = useState({ offset: 1, limit: 10 })\n const [loading, setLoading] = useState(true)\n\n const [triggerSet, setTriggerSet] = useState(false)\n\n const [openFilters, setOpenFilters] = useState(false)\n\n // input filter state\n // it is used as the input internal state, before the filters are applied\n\n const onFilterChange = useCallback(\n (key, value) => {\n setFilters({\n ...filters,\n [key]: value\n })\n },\n [filters]\n )\n\n useEffect(() => {\n let wrapperHeight\n if (wrapperRef != null && wrapperRef.current != null) {\n wrapperHeight = wrapperRef.current.offsetHeight\n } else {\n wrapperHeight = document.getElementById('events-wrapper').offsetHeight\n }\n const limit = Math.floor(\n (wrapperHeight - convertRemToPixels(removalHeight)) /\n convertRemToPixels(lineHeight)\n )\n setPagination({ offset: 1, limit: limit > 5 ? limit : 5 })\n }, [])\n\n // const fetchEventAndUpdate = useCallback(\n // async id => {\n // try {\n // const response = await logic.getEventDetails(id)\n // if (\n // response?.data &&\n // (filters?.['area__monitoringType'] === '' ||\n // filters?.['area__monitoringType'] ===\n // response?.data?.area?.monitoringType) &&\n // (filters?.spotType === 'all' ||\n // filters?.spotType === response?.data?.spotType) &&\n // moment(response?.data?.createdAt).isSameOrAfter(\n // moment(filters?.dateAfter)\n // ) &&\n // moment(response?.data?.createdAt).isSameOrBefore(\n // moment(filters?.dateBefore)\n // )\n // ) {\n // const stateCopy = JSON.parse(JSON.stringify(eventsState?.events))\n // const newEventsArray = [...stateCopy.slice(0, -1), response.data]\n // setEventsState(currState => ({\n // ...currState,\n // events: newEventsArray\n // }))\n // }\n // } catch (error) {\n // console.log({ error })\n // }\n // },\n // [eventsState?.events, filters]\n // )\n\n const fetchEvents = useCallback(() => {\n setLoading(true)\n setTriggerSet(false)\n\n logic\n .getEvents({\n params: {\n ...{\n ...pagination,\n offset: (pagination.offset - 1) * pagination.limit\n },\n ...filters,\n dateBefore: moment(\n getModifiedEndDateMoment(filters.interval, filters.dateBefore)\n ).format(API_DATE_FORMAT)\n }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n\n setEventsState({\n eventsCount: data.count,\n events: data.results\n })\n } else {\n setEventsState({ eventsCount: 0, events: [] })\n }\n setLoading(false)\n })\n .catch(err => {\n console.log({ err })\n setEventsState({ eventsCount: 0, events: [] })\n setLoading(false)\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }, [actions, filters, pagination])\n\n useEffect(() => {\n fetchEvents()\n // if i had fetch events, the submit button is useless, since it updates everytime i change a filter\n // eslint-disable-next-line\n }, [triggerSet, size, pagination])\n\n const resetFilters = useCallback(async () => {\n await setFilters(() => defaultFilter)\n await setTriggerSet(() => true)\n }, [setFilters, setTriggerSet, defaultFilter])\n\n const handleWSMessages = useCallback(\n msg => {\n if (msg != null && msg.sender === 'occupancyhistory') {\n // if (msg.content != null && msg.content.id != null) {\n // fetchEventAndUpdate(msg.content.id)\n // } else {\n fetchEvents()\n // }\n }\n },\n [fetchEvents]\n )\n\n useEffect(() => {\n if (wsStore.message != null) {\n handleWSMessages(wsStore.message)\n }\n }, [wsStore.message, handleWSMessages])\n\n const spotTypeOptions = useMemo(\n () => [\n {\n label: t('table.all_filter'),\n value: ''\n },\n ...AVAILABLE_SPOT_TYPES?.map(el => ({\n label: t(`table.${el}`),\n value: el\n }))\n ],\n [t]\n )\n\n const memoFilterMonitoringOptions = useMemo(\n () => [\n {\n label: t('table.all_filter'),\n value: ''\n },\n ...monitoringTypeOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n }))\n ],\n [t]\n )\n\n const memoOnFilterChangeValue = useCallback(\n name => e => onFilterChange(name, e.target.value),\n [onFilterChange]\n )\n\n const handleReplaceForm = useCallback(\n form =>\n setFilters({\n ...filters,\n ...form\n }),\n [filters]\n )\n\n const handleResetForm = useCallback(() => setFilters(defaultFilter), [\n defaultFilter\n ])\n\n const filtersInputs = useMemo(() => {\n let tempFormat = 'YYYY'\n switch (filters.interval) {\n case 'year':\n tempFormat = 'YYYY'\n break\n case 'month':\n tempFormat = 'MM-YYYY'\n break\n case 'day':\n tempFormat = 'DD-MM-YYYY'\n break\n default:\n tempFormat = 'DD-MM-YYYY'\n break\n }\n\n return (\n \n \n \n \n \n \n \n )\n }, [\n filters,\n memoOnFilterChangeValue,\n spotTypeOptions,\n memoFilterMonitoringOptions,\n handleReplaceForm,\n handleResetForm,\n onFilterChange,\n defaultFilter,\n t\n ])\n\n const handleReset = useCallback(() => {\n resetFilters()\n setOpenFilters(false)\n }, [resetFilters])\n\n const handleApply = useCallback(() => {\n setTriggerSet(true)\n setOpenFilters(false)\n }, [])\n\n const filtersButtons = useMemo(\n () => (\n \n {t('table.reset')}\n \n {t('table.apply')}\n \n \n ),\n [t, handleApply, handleReset]\n )\n\n const memoizedLoadingTable = useMemo(\n () =>\n [...Array(6)].map((el, index) => (\n \n )),\n []\n )\n const onCloseFilters = useCallback(() => setOpenFilters(false), [])\n const onOpenFilters = useCallback(() => setOpenFilters(true), [])\n const handlePaginationChange = useCallback(\n (event, page) => setPagination({ ...pagination, offset: page }),\n [pagination, setPagination]\n )\n\n const memoizedColumns = useMemo(() => {\n return columns.map(el => ({ ...el, label: t(el.label) }))\n }, [t])\n\n const breadCrumbItems = useMemo(\n () => [\n {\n path: '/events/',\n label: 'sections.events'\n }\n ],\n []\n )\n\n return (\n \n \n \n {!responsiveHandlers.isDesktop && (\n \n \n \n \n \n \n \n )}\n \n {responsiveHandlers.isDesktop && (\n \n {[filtersInputs, filtersButtons]}\n \n )}\n {!loading && (\n <>\n {eventsState.events != null && responsiveHandlers.isDesktop && (\n \n )}\n {eventsState.events != null && !responsiveHandlers.isDesktop && (\n {}}\n />\n )}\n {eventsState.events != null && (\n \n )}\n >\n )}\n {loading && <>{memoizedLoadingTable}>}\n \n \n )\n})\n\nconst Wrapper = styled.div`\n padding: 1.5rem;\n display: flex;\n flex-direction: column;\n overflow-y: scroll;\n height: 100%;\n ${({ theme }) => theme.smallDesktop`\n padding: 1.5rem 2rem;\n `}\n`\n\nconst BreadCrumbRow = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n row-gap: 1rem;\n flex: 0 0 auto;\n\n ${({ theme }) => theme.smallDesktop`\n display: flex;\n justify-content: space-between;\n align-items: center;\n min-height: 2.5rem;\n `}\n`\n\nconst FiltersWrapper = styled.div`\n margin: 1.5rem 0 2rem;\n`\n\n// const FiltersTitle = styled.h3`\n// color: var(--breadcrumb-gray-color);\n// font-size: 1.125rem;\n// letter-spacing: 0;\n// line-height: 1em;\n// margin-bottom: 1rem;\n// `\n\nconst ButtonWrapper = styled.div`\n display: grid;\n grid-template-columns: 2.5rem;\n column-gap: 0.5rem;\n margin-right: auto;\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: 2.5rem;\n column-gap: 0.5rem;\n margin: 0;\n `}\n`\n\nconst FiltersRow = styled.div`\n display: none;\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(5, minmax(10rem, 1fr));\n display: grid;\n column-gap: 1rem;\n max-height: 2.5rem;\n\n `}\n`\n","import { useEffect, useState } from 'react'\n\nexport default () => {\n // Initialize state with undefined width/height so server and client renders match\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\n const [windowSize, setWindowSize] = useState({\n width: undefined,\n height: undefined\n })\n\n useEffect(() => {\n // Handler to call on window resize\n function handleResize () {\n // Set window width/height to state\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight\n })\n }\n\n // Add event listener\n window.addEventListener('resize', handleResize)\n\n // Call handler right away so state gets updated with initial window size\n handleResize()\n\n // Remove event listener on cleanup\n return () => window.removeEventListener('resize', handleResize)\n }, []) // Empty array ensures that effect is only run on mount\n\n return windowSize\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { DATETIME_FORMAT } from 'config'\nimport moment from 'moment'\nconst columns = [\n {\n key: 'uid',\n label: 'table.uid',\n render: ({ setSpotInDetail, t, ...element }) => (\n setSpotInDetail(element)}>\n {element.uid}\n \n )\n },\n {\n key: 'spotType',\n label: 'table.spot_type',\n render: ({ t, ...element }) => t(`table.${element.spotType}`)\n },\n {\n key: 'occupied',\n label: 'table.status',\n render: ({ t, ...element }) =>\n element.occupied != null ? (\n \n {t(element.occupied ? 'table.occupied' : 'table.free')}\n \n ) : (\n \n {t('table.unknown')}\n \n )\n },\n {\n key: 'lastCommunication',\n label: 'table.last_communication',\n render: element =>\n element.lastCommunication != null\n ? moment(element.lastCommunication).format(DATETIME_FORMAT)\n : '-'\n }\n\n]\n\nexport default columns\n\nconst StatusWithColor = styled.p`\n font-size: inherit;\n line-height: inherit;\n font-weight: inherit;\n color: ${({ color }) => color || 'var(--black-color)'};\n`\n\nconst StyledLink = styled.span`\n color: var(--primary-color);\n cursor: pointer;\n &:hover {\n text-decoration: underline;\n }\n`\n\n// const StyledRouterLink = styled(Link)`\n// width: fit-content;\n// color: var(--primary-color);\n// cursor: pointer;\n// &:hover {\n// text-decoration: underline;\n// }\n// `;\n\n// const SensorsWrapper = styled.div`\n// width: fit-content;\n// display: flex;\n// flex-direction: column;\n// `;\n","import axios from 'axios'\n\nimport {\n BASE_API_URL,\n WS_BASE_URL,\n WS_JOIN_GROUP,\n NOMINATIM_BASE_URL,\n NOMINATIM_OPTIONS\n} from 'config'\nconst SPOTS_URL = BASE_API_URL + '/spots/'\nconst DETAILS_URL = BASE_API_URL + '/spots' // without / to better understand on axios\nconst AREASEARCH_URL = BASE_API_URL + '/areas/search/'\nconst SENSORSEARCH_URL = BASE_API_URL + '/sensors/search/'\nconst SPOTSSEARCH_URL = BASE_API_URL + '/spots/search/'\nconst CSV_URL = BASE_API_URL + '/spots/csv/'\n\nconst NOMINATIM_SEARCH_URL = NOMINATIM_BASE_URL + '/search'\n\nconst logic = {\n getSpots: options => {\n return Promise.resolve().then(() => {\n return axios.get(SPOTS_URL, options)\n })\n },\n fetchAreasOptions: options => {\n return Promise.resolve().then(() => axios.get(AREASEARCH_URL, options))\n },\n fetchSensorsOptions: options => {\n return Promise.resolve().then(() => axios.get(SENSORSEARCH_URL, options))\n },\n fetchUidOptions: options => {\n return Promise.resolve().then(() => axios.get(SPOTSSEARCH_URL, options))\n },\n createWebSocketConnection () {\n return new Promise((resolve, reject) => {\n const actualToken = window.localStorage.getItem('access_token')\n if (actualToken != null) {\n const socket = new window.WebSocket(\n `${WS_BASE_URL}?token=${actualToken}`\n )\n\n socket.onopen = function () {\n socket.send(JSON.stringify({ command: 'join', group: WS_JOIN_GROUP }))\n console.info(\n `%c🔌 WebSocket: joined #${WS_JOIN_GROUP}`,\n 'color:green'\n )\n resolve(socket)\n }\n\n socket.onerror = function (evt) {\n reject(new Error(evt))\n }\n } else {\n reject(new Error('403'))\n }\n })\n },\n fetchLocationOptions: options =>\n Promise.resolve().then(() =>\n axios.get(NOMINATIM_SEARCH_URL, {\n ...options,\n params: {\n ...options.params,\n ...NOMINATIM_OPTIONS\n }\n })\n ),\n uploadCSV: options =>\n Promise.resolve().then(() =>\n axios.post(CSV_URL, options, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n ),\n getSpotDetails: id =>\n Promise.resolve().then(() => {\n return axios.get(`${DETAILS_URL}/${id}/`)\n })\n}\n\nexport default logic\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\nimport { BASE_API_URL, NOMINATIM_BASE_URL, NOMINATIM_OPTIONS } from 'config'\nconst NEWSPOT_URL = BASE_API_URL + '/spots/'\nconst AVAILABLESENSORS_URL = BASE_API_URL + '/sensors/'\nconst NOMINATIM_SEARCH_URL = NOMINATIM_BASE_URL + '/search'\n\nconst VALIDATIONS = {\n uid: [Check.isRequired],\n sensor: [],\n spotType: [Check.isRequired],\n geometry: [Check.isRequired]\n}\n\nconst logic = {\n defaultValues: {\n uid: { value: null },\n sensor: { value: null },\n spotType: { value: null },\n geometry: { value: null }\n },\n submitNewSpot: (form, setForm) =>\n Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS)\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n\n const params = mapValues(form, ({ value }) => value)\n return axios.post(NEWSPOT_URL, { ...params })\n }),\n fetchAvailableSensors: () =>\n Promise.resolve().then(() => axios.get(AVAILABLESENSORS_URL)),\n fetchLocationOptions: options =>\n Promise.resolve().then(() =>\n axios.get(NOMINATIM_SEARCH_URL, {\n ...options,\n params: {\n ...options.params,\n ...NOMINATIM_OPTIONS\n }\n })\n )\n}\n\nexport default logic\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport { DATETIME_FORMAT } from 'config'\nimport moment from 'moment'\n\nexport default ({ children, ...props }) => {\n const { element, setInDetail } = props\n const { t } = useTranslation()\n return (\n setInDetail(element)}>\n {t(`table.${element.spotType}`)}\n \n {element.uid}\n {element.occupied != null ? (\n \n {t(element.occupied ? 'table.occupied' : 'table.free')}\n \n ) : (\n \n {t('table.unknown')}\n \n )}\n\n {t('table.last_communication')}\n \n {element.lastCommunication != null\n ? moment(element.lastCommunication).format(DATETIME_FORMAT)\n : '-'}\n \n \n )\n}\nconst Wrapper = styled.div`\n background: white;\n padding: 1rem 0;\n display: grid;\n grid-template-columns: 2.5fr 1fr;\n grid-template-rows: auto auto auto;\n column-gap: 8px;\n\n border-bottom: 1px solid var(--breadcrumb-gray-color);\n\n color: var(--text-color);\n font-size: 0.875rem;\n letter-spacing: 0;\n line-height: 1em;\n font-family: var(--primary-font);\n`\n\nconst StatusWithColor = styled.p`\n font-size: inherit;\n line-height: inherit;\n font-weight: inherit;\n text-align: right;\n color: ${({ color }) => color || 'var(--black-color)'};\n\n grid-column: 2/3;\n grid-row: 1/4;\n`\n\nconst Uid = styled.p`\n font-size: 1.5rem;\n color: var(--primary-color);\n line-height: 1em;\n margin-bottom: 1rem;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`\n\nconst Name = styled.h1`\n margin-bottom: 0.25rem;\n\n font-size: 0.75rem;\n color: var(--breadcrumb-gray-color);\n`\n\nconst Label = styled.p`\n font-weight: 700;\n font-size: 0.875rem;\n`\n\nconst Value = styled.p`\n font-size: 0.75rem;\n color: var(--breadcrumb-gray-color);\n text-align: right;\n`\n","import React, {\n useState,\n useEffect,\n useContext,\n useCallback,\n useMemo,\n memo\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport toast from 'components/StyledToast'\nimport isEqual from 'lodash.isequal'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport logic from './logic'\n\nimport StyledTable from 'components/StyledTable'\nimport StyledSkeleton from 'components/StyledSkeleton'\nimport StyledPagination from 'components/StyledPagination'\n\nimport SpotsTemplate from 'components/SpotsTemplate'\nimport StyledMobileTable from 'components/StyledMobileTable'\nimport CreateNewSpotModal from 'containers/CreateNewSpotModal'\n\nconst SpotsList = ({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n\n const {\n loading,\n spots,\n spotsCount,\n columns,\n setSpotInDetail,\n open,\n setOpen,\n spotTypeOptions,\n setTitle,\n pagination,\n setPagination,\n triggerSet,\n responsiveHandlers\n } = props\n const { t } = useTranslation()\n\n const [form, setForm] = useState(logic.defaultValues)\n\n const [hasSubmitted, setHasSubmitted] = useState(false)\n const [submitting, setSubmitting] = useState(false)\n const [apiResponse, setApiResponse] = useState(null)\n const [fetchedSensors, setFetchedSensors] = useState([])\n\n const reset = useCallback(() => {\n setForm(logic.defaultValues)\n setHasSubmitted(false)\n setSubmitting(false)\n setApiResponse(null)\n }, [])\n\n const handleClose = useCallback(() => {\n setOpen(false)\n reset()\n }, [reset, setOpen])\n\n const handleChange = useCallback(\n (key, value) => {\n setForm({\n ...form,\n [key]: {\n value: value\n }\n })\n },\n [form]\n )\n\n useEffect(() => {\n setSpotInDetail(null)\n reset()\n setTitle('spots.filter_title')\n logic\n .fetchAvailableSensors()\n .then(response => {\n if (response.data != null && response.data.results != null) {\n setFetchedSensors(response.data.results)\n }\n })\n .catch(err => {\n console.log({ err })\n setFetchedSensors([])\n // ERROR\n })\n // eslint-disable-next-line\n }, [])\n\n const handleSubmit = useCallback(\n event => {\n event.preventDefault()\n setHasSubmitted(true)\n setSubmitting(true)\n logic\n .submitNewSpot(form, form => setForm({ ...form }))\n .then(response => {\n if (response.data) {\n handleClose()\n triggerSet()\n toast.success(t('spots.create_success'))\n }\n })\n .catch(err => {\n console.log({ err })\n\n toast.error(t('spots.create_error'))\n\n if (err == null || err.response == null) {\n actions.serverError()\n } else {\n if (err.response.data != null) {\n setApiResponse(err.response.data)\n }\n }\n })\n .finally(() => setSubmitting(false))\n },\n [actions, form, handleClose, t, triggerSet]\n )\n\n const memoizedItems = useMemo(\n () =>\n spots\n .slice(\n (pagination.offset - 1) * pagination.limit,\n (pagination.offset - 1) * pagination.limit + pagination.limit\n )\n .map(el => ({ ...el, t, setSpotInDetail })),\n [spots, pagination.limit, pagination.offset, setSpotInDetail, t]\n )\n\n const memoizedColumns = useMemo(() => {\n return columns.map(el => ({ ...el, label: t(el.label) }))\n }, [columns, t])\n\n const memoizedLoadingTable = useMemo(\n () =>\n [...Array(6)].map((el, index) => (\n \n )),\n []\n )\n\n const handlePaginationChange = useCallback(\n (event, page) => setPagination({ ...pagination, offset: page }),\n [pagination, setPagination]\n )\n\n return (\n <>\n {!loading ? (\n <>\n {spots != null && responsiveHandlers.isDesktop && (\n \n )}\n {spots != null && !responsiveHandlers.isDesktop && (\n \n )}\n \n >\n ) : (\n <>{memoizedLoadingTable}>\n )}\n {open && (\n \n )}\n >\n )\n}\n\nexport default memo(withResponsive(SpotsList), isEqual)\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\nimport { BASE_API_URL } from 'config'\nconst DETAILS_URL = BASE_API_URL + '/spots' // without / to better understand on axios\nconst AVAILABLESENSORS_URL = BASE_API_URL + '/sensors/'\n\nconst VALIDATIONS = {\n uid: [Check.isRequired],\n sensor: [Check.isRequired],\n spotType: [Check.isRequired],\n geometry: [Check.isRequired]\n}\n\nconst logic = {\n defaultValues: {\n uid: { value: null },\n sensor: { value: null },\n spotType: { value: null },\n geometry: { value: null }\n },\n getSpotDetails: id =>\n Promise.resolve().then(() => {\n return axios.get(`${DETAILS_URL}/${id}/`)\n }),\n updateSpotDetails: (id, form, setForm) =>\n Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS)\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n\n const params = mapValues(form, ({ value }) => value)\n return axios.put(`${DETAILS_URL}/${id}/`, { ...params })\n }),\n deleteSpot: id =>\n Promise.resolve().then(() => axios.delete(`${DETAILS_URL}/${id}/`)),\n fetchAvailableSensors: () =>\n Promise.resolve().then(() => axios.get(AVAILABLESENSORS_URL))\n}\nexport default logic\n","import React, {\n useState,\n useEffect,\n useContext,\n useCallback,\n useMemo,\n memo\n} from 'react'\nimport styled, { css } from 'styled-components'\nimport get from 'lodash.get'\nimport isEqual from 'lodash.isequal'\n\nimport toast from 'components/StyledToast'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport { useTranslation } from 'react-i18next'\nimport { useParams } from 'react-router-dom'\n\nimport StyledButton from 'components/StyledButton'\nimport StyledDialog from 'components/StyledDialog'\nimport StyledSkeleton from 'components/StyledSkeleton'\n\nimport InputAndLabel from 'containers/InputAndLabel'\nimport SelectAndLabel from 'containers/SelectAndLabel'\n\nimport logic from './logic'\n\nconst keysToMapArrays = ['sensor']\n\nconst SpotsDetails = ({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n\n const { t } = useTranslation()\n const { id } = useParams()\n const {\n setSpotInDetail,\n spotInDetail,\n isEditing,\n setIsEditing,\n setGeometry,\n geometry,\n spotTypeOptions,\n setTitle,\n setMapHelperText,\n canEdit,\n resetParent,\n hasCRUDPermission,\n update,\n fetchedSpot,\n setFetchedSpot,\n responsiveHandlers\n } = props\n\n const [form, setForm] = useState(logic.defaultValues)\n\n const [submitState, setSubmitState] = useState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n\n const [fetchedSensors, setFetchedSensors] = useState(null)\n const [canDelete, setCanDelete] = useState(true)\n\n const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false)\n\n const handleClickOpen = useCallback(() => {\n setConfirmDeleteOpen(true)\n }, [])\n\n const handleClose = useCallback(() => {\n setConfirmDeleteOpen(false)\n }, [])\n const reset = useCallback(() => {\n setForm(logic.defaultValues)\n setSubmitState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n resetParent()\n }, [resetParent])\n\n useEffect(() => {\n if (!isEditing && fetchedSpot != null) {\n setGeometry(fetchedSpot.geometry)\n }\n // eslint-disable-next-line\n }, [fetchedSpot])\n\n useEffect(() => {\n reset()\n logic\n .fetchAvailableSensors()\n .then(response => {\n if (response.data != null && response.data.results != null) {\n setFetchedSensors(response.data.results)\n }\n })\n .catch(err => {\n console.log({ err })\n setFetchedSensors([])\n // ERROR\n })\n // eslint-disable-next-line\n }, [])\n\n useEffect(() => {\n if (id != null && !isNaN(Number(id))) {\n if (!isEditing) {\n setSubmitState({\n hasSubmitted: false,\n submitting: false,\n apiResponse: null\n })\n logic\n .getSpotDetails(id)\n .then(response => {\n if (response.data) {\n const { data } = response\n setFetchedSpot(data)\n\n if (data.mode === 'automatic') {\n setCanDelete(false)\n }\n\n const defaultKeys = Object.keys(logic.defaultValues)\n const reduced = Object.keys(data).reduce(\n (acum, key) => {\n if (defaultKeys.includes(key)) {\n if (keysToMapArrays.includes(key)) {\n acum[key] = { value: data[key].map(el => el.id) }\n } else {\n acum[key] = { value: data[key] }\n }\n }\n return acum\n },\n { ...logic.defaultValues }\n )\n setForm(reduced)\n\n if (spotInDetail == null) {\n setSpotInDetail(data)\n }\n } else {\n reset()\n setSpotInDetail(null)\n setFetchedSpot(null)\n }\n })\n .catch(err => {\n console.log({ err })\n setSpotInDetail(null)\n setFetchedSpot(null)\n // ERROR\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }\n } else {\n reset()\n setSpotInDetail(null)\n setFetchedSpot(null)\n }\n // eslint-disable-next-line\n }, [id, isEditing, update])\n\n const checkIfError = useCallback(\n property => {\n const error = get(submitState.apiResponse, property, null)\n if (\n submitState.apiResponse != null &&\n error != null &&\n error[0] != null\n ) {\n return error[0]\n }\n return null\n },\n [submitState.apiResponse]\n )\n\n const helperTextGenerator = useCallback(\n property => {\n if (submitState.hasSubmitted && form[property] != null) {\n const apiError = checkIfError(property)\n if (apiError != null) {\n return apiError\n } else if (form[property].message) {\n return t(`errors.${form[property].message}`)\n }\n }\n return null\n },\n [form, t, checkIfError, submitState.hasSubmitted]\n )\n\n const handleChange = useCallback(\n (key, value) => {\n setForm({\n ...form,\n [key]: {\n value: value\n }\n })\n },\n [form]\n )\n\n useEffect(() => {\n if (isEditing) {\n handleChange('geometry', geometry)\n }\n // eslint-disable-next-line\n }, [geometry])\n\n useEffect(() => {\n if (isEditing) {\n setMapHelperText(\n \n {checkIfError('geometry') || t('map.spot_edit_text')}\n \n )\n }\n // eslint-disable-next-line\n }, [form, isEditing])\n\n const handleSubmit = useCallback(\n event => {\n event.preventDefault()\n setSubmitState(submitState => ({\n ...submitState,\n hasSubmitted: true,\n submitting: true\n }))\n logic\n .updateSpotDetails(id, form, form => setForm({ ...form }))\n .then(response => {\n setIsEditing(false)\n if (response.data) {\n setSpotInDetail(response.data)\n toast.success(t('spots.edit_success'))\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n .catch(err => {\n console.log({ err })\n toast.error(t('spots.edit_error'))\n\n if (err == null || err.response == null) {\n actions.serverError()\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n } else {\n if (err.response.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n apiResponse: err.response.data\n }))\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n }\n })\n },\n [actions, form, id, setIsEditing, setSpotInDetail, t]\n )\n\n const handleDelete = useCallback(() => {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: true\n }))\n logic\n .deleteSpot(id)\n .then(response => {\n setSpotInDetail(null)\n toast.success(t('spots.delete_success'))\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n })\n .catch(err => {\n console.log({ err })\n toast.error(t('spots.delete_error'))\n if (err == null || err.response == null) {\n actions.serverError()\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n // ERROR\n if (err.response != null && err.response.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n apiResponse: err.response.data\n }))\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n .finally(() => handleClose())\n }, [actions, handleClose, id, setSpotInDetail, t])\n\n useEffect(() => {\n if (fetchedSpot != null && fetchedSpot.uid != null) {\n setTitle(isEditing ? 'spots.edit' : 'spots.details')\n } else if (spotInDetail != null && spotInDetail.uid != null) {\n setTitle(isEditing ? 'spots.edit' : 'spots.details')\n } else {\n setTitle(isEditing ? 'spots.edit' : 'spots.details')\n }\n }, [fetchedSpot, spotInDetail, isEditing, setTitle, t])\n\n const memoizedLoadingTable = useMemo(\n () =>\n [...Array(3)].map((el, index) => (\n \n )),\n []\n )\n\n const memoSpotTypeOptions = useMemo(\n () =>\n spotTypeOptions != null\n ? spotTypeOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n }))\n : [],\n [spotTypeOptions, t]\n )\n\n const memoFetchedSensors = useMemo(\n () =>\n fetchedSensors != null\n ? fetchedSensors.map(el => ({\n value: el.id,\n label: el.uid ?? el.id\n }))\n : [],\n [fetchedSensors]\n )\n\n const memoHandleChangeValue = useCallback(\n name => e => handleChange(name, e?.target?.value),\n [handleChange]\n )\n\n const memoHandleChange = useCallback(name => e => handleChange(name, e), [\n handleChange\n ])\n\n const memoHandleChangeArray = useCallback(\n name => event =>\n handleChange(\n name,\n event?.target?.value?.length !== 0 ? event?.target?.value : null\n ),\n [handleChange]\n )\n\n const startEditing = useCallback(() => setIsEditing(true), [setIsEditing])\n\n const cancelEditing = useCallback(() => setIsEditing(false), [setIsEditing])\n\n const goBack = useCallback(() => {\n reset()\n setSpotInDetail(null)\n }, [reset, setSpotInDetail])\n\n return (\n <>\n \n {fetchedSpot == null && <>{memoizedLoadingTable}>}\n {fetchedSpot != null && (\n <>\n \n \n \n >\n )}\n \n \n {isEditing ? (\n <>\n \n {t('cancel')}\n \n {responsiveHandlers.isDesktop && (\n <>\n \n \n \n >\n )}\n \n {t('submit')}\n \n >\n ) : (\n <>\n \n {t('spots.back')}\n \n {responsiveHandlers.isDesktop && (\n <>\n \n \n >\n )}\n {hasCRUDPermission && canDelete ? (\n \n {t('spots.delete')}\n \n ) : (\n responsiveHandlers.isDesktop && \n )}\n {hasCRUDPermission && (\n \n {t('spots.edit')}\n \n )}\n >\n )}\n \n \n >\n )\n}\n\nexport default memo(withResponsive(SpotsDetails), isEqual)\n\nconst ActionsWrapper = styled.div`\n display: grid;\n margin: 1.5rem 0 0;\n\n grid-template-columns: minmax(10rem, 1fr);\n row-gap: 1rem;\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(5, minmax(12.375rem, 1fr));\n column-gap: 1.5rem;\n margin: 2.5rem 0 0;\n\n\n ${props =>\n props.isEditing &&\n css`\n grid-template-columns: repeat(5, minmax(12.375rem, 1fr));\n `}\n`}\n`\n\nconst BlankSpace = styled.div`\n grid-column: span 1;\n`\n\nconst DetailsWrapper = styled.div`\n display: grid;\n grid-template-columns: minmax(0, 1fr);\n\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(4, minmax(0, 1fr));\n column-gap: 0.75rem;\n\n\n`}\n`\n\nconst MapHelperText = styled.p`\n color: var(--primary-color);\n font-size: 0.875rem;\n font-style: italic;\n letter-spacing: 0;\n line-height: 1em;\n\n margin: 0.5rem 0 0;\n\n ${props =>\n props.error &&\n css`\n color: var(--error-color);\n `}\n`\n","import React, {\n useState,\n useEffect,\n useRef,\n useContext,\n useMemo,\n useCallback\n} from 'react'\nimport styled from 'styled-components'\nimport { AUTOMATIC_EDIT_PERMISSIONS, AVAILABLE_SPOT_TYPES } from 'config'\n\nimport Badge from '@material-ui/core/Badge'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport { Context as SocketContext } from 'providers/SocketProvider/socketProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport { useTranslation } from 'react-i18next'\nimport {\n useHistory,\n useRouteMatch,\n Route,\n Switch,\n Redirect\n} from 'react-router-dom'\n\nimport columns from './columns'\nimport logic from './logic'\nimport { occupiedSearchOptions } from 'utils/options'\n\nimport hasCRUDPermissions from 'utils/hasCRUDPermissions'\n\nimport UploadIcon from 'icons/UploadIcon'\nimport FilterIcon from 'icons/FilterIcon'\n\nimport StyledBreadCrumb from 'components/StyledBreadCrumb'\nimport StyledButton from 'components/StyledButton'\nimport StyledAutoComplete from 'components/StyledAutoComplete'\nimport StyledSelect from 'components/StyledSelect'\nimport toast from 'components/StyledToast'\n\nimport MapContainer from 'containers/MapContainer'\nimport SpotsList from 'containers/SpotsList'\nimport SpotsDetails from 'containers/SpotsDetails'\nimport FiltersModal from 'containers/FiltersModal'\n\nexport default withResponsive(({ children, ...props }) => {\n const { actions, store } = useContext(AuthContext)\n const { store: wsStore } = useContext(SocketContext)\n\n const { responsiveHandlers } = props\n\n const { t } = useTranslation()\n const { path } = useRouteMatch()\n const history = useHistory()\n\n const [spotsState, setSpotsState] = useState({\n spotsCount: 0,\n spots: []\n })\n\n const [loading, setLoading] = useState(true)\n const [isEditing, setIsEditing] = useState(false)\n const [open, setOpen] = useState(false)\n const [geometry, setGeometry] = useState(null)\n\n const defaultFilter = useMemo(\n () => ({\n area: '',\n sensor: '',\n spotType: '',\n occupied: '',\n uid: ''\n }),\n []\n )\n const [filters, setFilters] = useState(defaultFilter)\n const [pagination, setPagination] = useState({ offset: 1, limit: 10 })\n const [triggerSet, setTriggerSet] = useState(false)\n\n const areaTextInputTimeoutRef = useRef(null)\n const sensorTextInputTimeoutRef = useRef(null)\n const uidTextInputTimeoutRef = useRef(null)\n\n const [textInput, setTextInput] = useState({\n area: '',\n sensor: '',\n uid: ''\n })\n const [searchOptions, setSeachOptions] = useState({\n sensor: [],\n area: [],\n uid: []\n })\n\n const [mapHelperText, setMapHelperText] = useState(null)\n const [fetchedSpot, setFetchedSpot] = useState(null)\n\n const [title, setTitle] = useState('')\n\n const [spotInDetail, setSpotInDetail] = useState(null)\n const [update, setUpdate] = useState(false)\n\n const locationInputTimeoutRef = useRef(null)\n const [locationOptions, setLocationOptions] = useState([])\n const [locationTextInput, setLocationTextInput] = useState('')\n const [locationSelected, setLocationSelected] = useState(null)\n\n const hiddenFileInput = useRef(null)\n const [openFilters, setOpenFilters] = useState(false)\n\n const [submitState, setSubmitState] = useState({\n submitting: false,\n hasSubmitted: false\n })\n\n const spotTypeOptions = useMemo(\n () => [...AVAILABLE_SPOT_TYPES?.map(el => ({ label: el, value: el }))],\n []\n )\n\n const handleSetSpotInDetail = useCallback(\n spot => {\n if (spot != null && spot.id != null) {\n setSpotInDetail(spot)\n history.push(`${path}${spot.id}/`)\n } else {\n setSpotInDetail(null)\n setFetchedSpot(null)\n setIsEditing(false)\n setTriggerSet(true)\n history.push(`${path}`)\n }\n },\n [history, path]\n )\n\n const resetParent = useCallback(() => {\n setLocationTextInput('')\n setLocationSelected(null)\n setLocationOptions([])\n }, [])\n\n const onFilterChange = useCallback(\n (key, value) => {\n setFilters({\n ...filters,\n [key]: value\n })\n },\n [filters]\n )\n\n const handleAutocompleteInputs = useCallback(\n (property, value) => {\n setTextInput({\n ...textInput,\n [property]: value\n })\n onFilterChange(property, value)\n },\n [textInput, onFilterChange]\n )\n\n const canEdit = useCallback(\n property => {\n if (spotInDetail != null && spotInDetail.mode === 'automatic') {\n return AUTOMATIC_EDIT_PERMISSIONS.spot.includes(property)\n }\n return true\n },\n [spotInDetail]\n )\n\n const fetchSpotAndUpdate = useCallback(\n id => {\n logic.getSpotDetails(id).then(response => {\n if (response.data) {\n const { data } = response\n const spotsCopy = JSON.parse(JSON.stringify(spotsState.spots))\n const found = spotsCopy.findIndex(el => el.id === id)\n if (found >= 0) {\n spotsCopy[found] = data\n setSpotsState({\n ...spotsState,\n spots: spotsCopy\n })\n }\n }\n })\n },\n [spotsState]\n )\n\n const fetchSpots = useCallback(() => {\n setLoading(true)\n setTriggerSet(false)\n\n logic\n .getSpots({\n params: {\n ...{\n limit: 'max'\n },\n ...filters\n }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSpotsState({\n spotsCount: data.count,\n spots: data.results\n })\n } else {\n setSpotsState({ spotsCount: 0, spots: [] })\n }\n setLoading(false)\n })\n .catch(err => {\n console.log({ err })\n setSpotsState({ spotsCount: 0, spots: [] })\n setLoading(false)\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n }, [actions, filters])\n\n const handleWSMessages = useCallback(\n msg => {\n if (\n msg != null &&\n (msg.sender === 'spotevent' || msg.sender === 'spot')\n ) {\n if (spotInDetail && msg?.content?.id === spotInDetail.id) {\n if (msg.type === 'update') {\n setUpdate(!update)\n } else if (msg.type === 'delete' && msg.content != null) {\n setSpotInDetail(null)\n }\n } else if (spotInDetail == null) {\n if (msg.type === 'new' || msg.type === 'delete') {\n fetchSpots()\n } else if (msg.type === 'update' && msg?.content?.id) {\n fetchSpotAndUpdate(msg.content.id)\n } else {\n fetchSpots()\n }\n }\n }\n },\n [fetchSpots, fetchSpotAndUpdate, spotInDetail, update]\n )\n\n const resetFilters = useCallback(() => {\n setFilters(defaultFilter)\n setTextInput({\n area: '',\n sensor: '',\n uid: ''\n })\n setTriggerSet(true)\n }, [defaultFilter])\n\n const handleClick = useCallback(event => {\n if (hiddenFileInput != null && hiddenFileInput.current != null) {\n hiddenFileInput.current.click()\n }\n }, [])\n\n const handleChange = useCallback(\n async event => {\n const fileUploaded = await event.target.files[0]\n\n if (fileUploaded != null) {\n setSubmitState({\n submitting: true,\n hasSubmitted: true\n })\n setLoading(true)\n // eslint-disable-next-line\n const formData = new FormData()\n\n formData.append('file', fileUploaded)\n await logic\n .uploadCSV(formData)\n .then(response => {\n setSubmitState({\n ...submitState,\n submitting: false\n })\n if (response.status === 200) {\n toast.success(t('spots.create_success'))\n }\n })\n .catch(err => {\n console.log({ err })\n setSubmitState({\n ...submitState,\n submitting: false\n })\n\n toast.error(t('spots.create_error'))\n if (err == null || err.response == null) {\n actions.serverError()\n }\n })\n .finally(() => setTriggerSet(true))\n }\n\n // props.handleFile(fileUploaded);\n },\n [actions, submitState, t]\n )\n\n useEffect(() => {\n if (spotInDetail == null) {\n fetchSpots()\n setPagination({ offset: 1, limit: 10 })\n }\n // eslint-disable-next-line\n }, [triggerSet, spotInDetail])\n\n useEffect(() => {\n if (locationInputTimeoutRef.current !== null) {\n clearTimeout(locationInputTimeoutRef.current)\n }\n locationInputTimeoutRef.current = setTimeout(() => {\n locationInputTimeoutRef.current = null\n if (logic.fetchLocationOptions) {\n logic\n .fetchLocationOptions({\n params: { q: locationTextInput, format: 'jsonv2' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setLocationOptions(data)\n } else {\n setLocationOptions([])\n }\n })\n .catch(err => {\n console.log({ err })\n setLocationOptions([])\n })\n }\n }, 500)\n }, [locationTextInput])\n\n useEffect(() => {\n if (wsStore.message != null) {\n handleWSMessages(wsStore.message)\n }\n // eslint-disable-next-line\n }, [wsStore.message])\n\n useEffect(() => {\n if (areaTextInputTimeoutRef.current !== null) {\n clearTimeout(areaTextInputTimeoutRef.current)\n }\n\n areaTextInputTimeoutRef.current = setTimeout(() => {\n areaTextInputTimeoutRef.current = null\n logic\n .fetchAreasOptions({\n params: { name: textInput.area !== '' ? textInput.area : 'all' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(searchOptions => ({\n ...searchOptions,\n area: data.results\n }))\n } else {\n setSeachOptions(searchOptions => ({ ...searchOptions, area: [] }))\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions(searchOptions => ({ ...searchOptions, area: [] }))\n })\n }, 500)\n }, [textInput.area])\n\n useEffect(() => {\n if (sensorTextInputTimeoutRef.current !== null) {\n clearTimeout(sensorTextInputTimeoutRef.current)\n }\n\n sensorTextInputTimeoutRef.current = setTimeout(() => {\n sensorTextInputTimeoutRef.current = null\n logic\n .fetchSensorsOptions({\n params: {\n sensor: textInput.sensor !== '' ? textInput.sensor : 'all'\n }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(searchOptions => ({\n ...searchOptions,\n sensor: data.results\n }))\n } else {\n setSeachOptions(searchOptions => ({ ...searchOptions, sensor: [] }))\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions(searchOptions => ({ ...searchOptions, sensor: [] }))\n })\n }, 500)\n }, [textInput.sensor])\n\n useEffect(() => {\n if (uidTextInputTimeoutRef.current !== null) {\n clearTimeout(uidTextInputTimeoutRef.current)\n }\n\n uidTextInputTimeoutRef.current = setTimeout(() => {\n uidTextInputTimeoutRef.current = null\n logic\n .fetchUidOptions({\n params: { uid: textInput.uid !== '' ? textInput.uid : 'all' }\n })\n .then(response => {\n if (response.data) {\n const { data } = response\n setSeachOptions(searchOptions => ({\n ...searchOptions,\n uid: data.results\n }))\n } else {\n setSeachOptions(searchOptions => ({ ...searchOptions, uid: [] }))\n }\n })\n .catch(err => {\n console.log({ err })\n setSeachOptions(searchOptions => ({ ...searchOptions, uid: [] }))\n })\n }, 500)\n }, [textInput.uid])\n\n const hasCRUDPermission = useMemo(() => hasCRUDPermissions(store.user), [\n store.user\n ])\n\n const spotTypeSearchOptions = useMemo(\n () => [\n {\n label: t('table.all_filter'),\n value: ''\n },\n ...AVAILABLE_SPOT_TYPES?.map(el => ({\n label: t(`table.${el}`),\n value: el\n }))\n ],\n [t]\n )\n\n const memoHandleAutocompleteInputs = useCallback(\n name => e => handleAutocompleteInputs(name, e),\n [handleAutocompleteInputs]\n )\n const memoOnFilterChangeValue = useCallback(\n name => e => onFilterChange(name, e.target.value),\n [onFilterChange]\n )\n\n const memoOnFilterChange = useCallback(\n name => (e, newValue) => onFilterChange(name, newValue),\n [onFilterChange]\n )\n\n const memoOccupiedSearchOptions = useMemo(\n () =>\n occupiedSearchOptions != null\n ? [\n ...occupiedSearchOptions.map(el => ({\n ...el,\n label: t(`table.${el.label}`)\n }))\n ]\n : [],\n [t]\n )\n\n const filtersInputs = useMemo(\n () => (\n \n \n \n \n \n \n \n ),\n [\n filters,\n memoHandleAutocompleteInputs,\n memoOccupiedSearchOptions,\n spotTypeSearchOptions,\n memoOnFilterChangeValue,\n memoOnFilterChange,\n searchOptions,\n t,\n textInput\n ]\n )\n\n const handleResetFilters = useCallback(() => {\n resetFilters()\n setOpenFilters(false)\n }, [resetFilters])\n\n const applyFilters = useCallback(() => {\n setTriggerSet(true)\n setOpenFilters(false)\n }, [])\n\n const filtersButtons = useMemo(\n () => (\n \n \n {t('table.reset')}\n \n \n {t('table.apply')}\n \n \n ),\n [handleResetFilters, applyFilters, submitState.submitting, t]\n )\n\n const breadcrumbItems = useMemo(\n () => [\n {\n path: path,\n label: 'sections.spots',\n onClick: () => handleSetSpotInDetail(null)\n },\n {\n path: '',\n label: `${t(title)} ${\n spotInDetail != null ? `- ${spotInDetail.uid}` : ''\n }`\n }\n ],\n [spotInDetail, path, t, title, handleSetSpotInDetail]\n )\n\n const openNewPopup = useCallback(() => setOpen(true), [])\n const memoSetTriggerSet = useCallback(() => setTriggerSet(true), [])\n\n const onCloseFilters = useCallback(() => setOpenFilters(false), [])\n const onOpenFilters = useCallback(() => setOpenFilters(true), [])\n\n const mapData = useMemo(\n () =>\n spotInDetail != null && fetchedSpot != null\n ? fetchedSpot.geometry != null\n ? [fetchedSpot]\n : null\n : spotsState.spots,\n [spotInDetail, fetchedSpot, spotsState.spots]\n )\n\n const isDrawAvailable = useMemo(() => isEditing && canEdit('geometry'), [\n isEditing,\n canEdit\n ])\n\n const flyToLocation = useMemo(\n () =>\n locationSelected?.boundingbox != null\n ? [\n [locationSelected.boundingbox[2], locationSelected.boundingbox[0]],\n [locationSelected.boundingbox[3], locationSelected.boundingbox[1]]\n ]\n : null,\n [locationSelected?.boundingbox]\n )\n\n const onSearchChange = useCallback(event => setLocationTextInput(event), [])\n const onSearchInputChange = useCallback(\n (event, newValue) => setLocationSelected(newValue),\n []\n )\n\n const getOptionLabel = useCallback(option => option.displayName, [])\n\n const mapSearchProps = useMemo(\n () => ({\n value: locationTextInput,\n onChange: onSearchChange,\n inputValue: locationSelected,\n onInputChange: onSearchInputChange,\n options: locationOptions,\n label: t('map.search_location'),\n getOptionLabel: getOptionLabel\n }),\n [\n locationTextInput,\n locationSelected,\n getOptionLabel,\n locationOptions,\n onSearchChange,\n onSearchInputChange,\n t\n ]\n )\n\n return (\n \n \n \n {hasCRUDPermission && spotInDetail == null && (\n \n \n {t('spots.new')}\n \n \n \n \n \n {!responsiveHandlers.isDesktop && (\n \n \n \n \n \n )}\n \n )}\n \n {spotInDetail == null && (\n \n {[filtersInputs, filtersButtons]}\n \n )}\n \n \n \n \n {isDrawAvailable && <>{mapHelperText}>}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n})\n\nconst Wrapper = styled.div`\n padding: 1.5rem;\n display: flex;\n flex-direction: column;\n overflow-y: scroll;\n height: 100%;\n\n ${({ theme }) => theme.smallDesktop`\n padding: 1.5rem 2rem;\n `}\n`\n\nconst MapWrapper = styled.div`\n width: 100%;\n min-height: 22rem;\n height: 100%;\n`\n\nconst MapAndTextWrapper = styled.div`\n margin: 1.5rem 0;\n min-height: 22rem;\n height: calc(\n 100vh - 3.75rem - 4rem - 4.125rem - 4rem - 3rem - 25rem - 3.75rem\n );\n flex: 0 0 auto;\n`\n\nconst BreadCrumbRow = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n row-gap: 1rem;\n flex: 0 0 auto;\n\n ${({ theme }) => theme.smallDesktop`\n display: flex;\n justify-content: space-between;\n align-items: center;\n min-height: 2.5rem;\n `}\n`\nconst ButtonWrapper = styled.div`\n display: grid;\n grid-template-columns: 10rem 2.5rem 2.5rem;\n column-gap: 0.5rem;\n margin-right: auto;\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: 14.625rem 2.5rem;\n column-gap: 0.5rem;\n margin: 0;\n `}\n`\n\nconst FiltersWrapper = styled.div`\n margin: 1.5rem 0 0;\n`\n\nconst FiltersRow = styled.div`\n display: none;\n ${({ theme }) => theme.smallDesktop`\n grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));\n display: grid;\n column-gap: 1rem;\n row-gap: 1rem;\n `}\n`\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import React from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport { Link } from 'react-router-dom'\n\nimport Container from 'components/Container'\nimport StyledButton from 'components/StyledButton'\n\nimport ServerErrorIllustration from 'icons/ServerErrorIllustration'\n\nexport default ({ children, ...props }) => {\n const { t } = useTranslation()\n return (\n \n \n \n \n {t('server_error.title')}\n {t('server_error.message')}\n \n \n {t('back')}\n \n \n \n \n \n )\n}\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n height: ${({ height }) => height};\n position: relative;\n overflow: visible;\n\n background-color: var(--backgroud-color);\n`\n\nconst ContentWrapper = styled.div`\n grid-column: 1/5;\n margin: auto;\n\n text-align: center;\n\n ${({ theme }) => theme.smallDesktop`\n grid-column: 3/10;\n\n `}\n`\n\nconst Title = styled.h1`\n color: var(--primary-color);\n font-size: 3rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1em;\n\n margin: 2.5rem auto 1rem;\n`\nconst Message = styled.p`\n color: var(--error-page-text-color);\n font-size: 1.5rem;\n letter-spacing: 0;\n line-height: 1em;\n\n margin-bottom: 3rem;\n`\n\nconst BackButton = styled(Link)`\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 15rem;\n margin: auto;\n`\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n )\n}\n\nexport default SvgComponent\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\nimport { BASE_API_URL } from 'config'\nconst RECOVER_URL = BASE_API_URL + '/request-password-reset/'\n\nconst VALIDATIONS = {\n email: [Check.isRequired, Check.isValidEmail]\n}\n\nconst logic = {\n defaultValues: {\n email: { value: '' }\n },\n recover: (form, setForm) => {\n return Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS)\n if (validation.invalid) {\n setForm({ ...validation.form })\n throw new ValidationError()\n }\n setForm({ ...validation.form })\n\n const params = mapValues(form, ({ value }) => value)\n return axios.post(RECOVER_URL, { ...params })\n })\n }\n}\n\nexport default logic\n","import React, { useState, useContext, useCallback } from 'react'\nimport styled from 'styled-components'\nimport PropTypes from 'prop-types'\nimport { useTranslation } from 'react-i18next'\nimport { Link } from 'react-router-dom'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport TitleStyle from 'styled/TitleStyle'\n\nimport Container from 'components/Container'\nimport StyledButton from 'components/StyledButton'\n\nimport InputAndLabel from 'containers/InputAndLabel'\n\nimport Background from 'images/background_smart_parking.jpg'\n\nimport BackArrowIcon from 'icons/BackArrowIcon'\n\nimport logic from './logic'\n\nconst RecoverPassword = ({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n const { responsiveHandlers } = props\n\n const { t } = useTranslation()\n const [form, setForm] = useState(logic.defaultValues)\n const [submitState, setSubmitState] = useState({\n hasSubmitted: false,\n submitting: false,\n error: null\n })\n\n const handleSubmit = useCallback(event => {\n event.preventDefault()\n setSubmitState(submitState => ({\n ...submitState,\n error: null,\n hasSubmitted: true,\n submitting: true\n }))\n logic\n .recover(form, form => setForm({ ...form }))\n .then(response => {\n setSubmitState(submitState => ({\n ...submitState,\n success: true,\n submitting: false\n }))\n })\n .catch(err => {\n console.log({ err })\n if (err == null || err.response == null) {\n actions.serverError()\n }\n if (err.response != null && err.response.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n error: t('errors.recover')\n }))\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n }, [actions, form, t])\n\n const handleChange = useCallback((key, value) => {\n setForm({\n ...form,\n [key]: {\n ...form[key],\n value: value\n }\n })\n }, [form])\n\n const memoHandleChangeValue = useCallback(\n name => e => {\n handleChange(name, e.target.value)\n },\n [handleChange]\n )\n\n return (\n \n \n \n \n {submitState.success && (\n \n {t('recover_password')}\n {t('recover_success')}\n {t('back_main_page')}\n \n )}\n {form != null && !submitState.success && (\n \n \n \n \n \n {t('recover_password')}\n \n \n \n \n\n {submitState.error != null && (\n {submitState.error}\n )}\n \n \n {t('recover_password')}\n \n \n \n )}\n \n \n )\n}\n\nRecoverPassword.propTypes = {\n email: PropTypes.string\n}\n\nexport default withResponsive(RecoverPassword)\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n height: ${({ height }) => height};\n position: relative;\n overflow: visible;\n\n background-color: var(--backgroud-color);\n`\n\nconst StyledForm = styled.form`\n grid-column: 1/5;\n background-color: var(--white-color);\n display: flex;\n flex-direction: column;\n\n padding: 2rem;\n margin: auto 0;\n\n border: 1px solid var(--platinium-gray-color);\n box-shadow: 0 0 0.375rem 0 var(--box-shadow-black-half-opacity);\n\n ${({ theme }) => theme.smallDesktop`\n grid-column: 5/9;\n\n `}\n`\n\nconst SuccessWrapper = styled.div`\n grid-column: 1/5;\n background-color: var(--white-color);\n display: flex;\n flex-direction: column;\n\n padding: 2rem;\n margin: auto 0;\n\n border: 1px solid var(--platinium-gray-color);\n box-shadow: 0 0 0.375rem 0 var(--box-shadow-black-half-opacity);\n\n ${({ theme }) => theme.smallDesktop`\n grid-column: 5/9;\n\n `}\n`\n\nconst SuccessMessage = styled.p`\n font-size: 1rem;\n text-align: center;\n margin: 1.5rem auto;\n line-height: 1.25rem;\n`\n\nconst InputWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n`\n\nconst ButtonWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: flex-end;\n display: grid;\n grid-template-columns: minmax(12.375rem, 1fr);\n`\n\nconst ErrorText = styled.p`\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n line-heihgt: 1em;\n color: var(--error-color);\n`\n\nconst BackgroundImage = styled.img`\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -10;\n left: 0;\n top: 0;\n object-fit: cover;\n opacity: 0.3;\n background: ${({ src }) => `url(${src}) center / cover`};\n`\n\nconst Overlay = styled.div`\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -1;\n left: 0;\n top: 0;\n opacity: 0.25;\n background-color: var(--overlay-background-color);\n`\n\nconst Title = styled.h1`\n ${TitleStyle}\n`\n\nconst TitleWrapper = styled.div`\n display: flex;\n align-items: center;\n position: relative;\n margin-bottom: 2rem;\n`\n\nconst IconWrapper = styled(Link)`\n display: flex;\n align-items: center;\n margin: auto 0.5rem auto 0;\n`\n\nconst GoBackLink = styled(Link)`\n width: fit-content;\n\n margin: 1rem auto;\n font-size: 0.875rem;\n text-decoration: underline;\n color: var(--primary-color);\n transition: opacity 0.3s ease-in-out;\n\n &:hover {\n transition: opacity 0.3s ease-in-out;\n opacity: 0.5;\n }\n`\n","import React from 'react'\nimport styled from 'styled-components'\nimport CircularProgress from '@material-ui/core/CircularProgress'\n\nexport default ({ children, ...props }) => (\n \n \n \n)\n\nconst Wrapper = styled.div`\n height: 100%;\n width: 100%;\n grid-columns: 1/5;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n left: 0;\n backdrop-filter: blur(0.5rem);\n z-index: 1001;\n\n ${({ theme }) => theme.smallDesktop`\n grid-column: 1/13;\n `}\n`\n","import axios from 'axios'\n\nimport { BASE_API_URL, BASE_MEDIA_URL } from 'config'\nconst METRICS_URL = BASE_API_URL + '/metrics/get-report/'\nconst PROFILE_URL = BASE_API_URL + '/profile/me/'\nconst SUPERSET_URL = BASE_API_URL + '/metrics-dashboard/'\n\nconst logic = {\n getSuperset: options =>\n Promise.resolve().then(() => {\n return axios.get(SUPERSET_URL, options)\n }),\n triggerReportGeneration: () => {\n return Promise.resolve().then(() => {\n return axios.get(METRICS_URL)\n })\n },\n downloadFile: fileUrl => {\n const instance = axios.create()\n\n instance\n .get(`${BASE_MEDIA_URL}${fileUrl}`, {\n responseType: 'blob'\n })\n .then(response => {\n const url = window.URL.createObjectURL(\n // eslint-disable-next-line\n new Blob([response.data], { type: 'application/pdf' })\n )\n // opens new window\n // window.open(url, '_blank')\n // download file\n const link = document.createElement('a')\n link.href = url\n link.target = '_blank'\n link.setAttribute('download', 'report.pdf')\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n })\n },\n getUserInfo: () => {\n return axios.get(PROFILE_URL)\n }\n}\n\nexport default logic\n","import React, {\n useState,\n // useContext,\n useRef,\n useEffect,\n useCallback\n} from 'react'\nimport styled from 'styled-components'\n// import { useTranslation } from 'react-i18next'\n\n// // import { SUPERSETURL, BASE_SUPERSETURL } from 'config'\n\n// import { Context as AuthContext } from 'providers/AuthProvider/authProvider'\n\n// import CircularProgress from '@material-ui/core/CircularProgress'\n\n// import toast from 'components/StyledToast'\nimport FullPageLoading from 'components/FullPageLoading'\nimport StyledBreadCrumb from 'components/StyledBreadCrumb'\n// import StyledButton from 'components/StyledButton'\n\nimport logic from './logic'\n\nconst Metrics = ({ children, ...props }) => {\n // const { actions } = useContext(AuthContext)\n // const { t } = useTranslation()\n const token = window.localStorage.getItem('access_token')\n const isTokenGood = useRef(null)\n const timeout = useRef(5000)\n const waiting = useRef(null)\n\n // const [downloadLoading, setDownloadLoading] = useState(false)\n const [loading, setLoading] = useState(true)\n const [superSetData, setSuperSetData] = useState(null)\n\n const fetchTokenStatus = useCallback(hadError => {\n if (isTokenGood.current == null) {\n logic\n .getSuperset()\n .then(res => {\n isTokenGood.current = true\n if (hadError) {\n setLoading(true)\n }\n if (res.data) {\n setSuperSetData(res.data)\n }\n })\n .catch(err => {\n console.log({ err })\n clearInterval(waiting.current)\n isTokenGood.current = null\n setSuperSetData(null)\n fetchTokenStatus(true)\n })\n }\n }, [])\n\n useEffect(() => {\n fetchTokenStatus()\n waiting.current = setInterval(() => {\n isTokenGood.current = null\n fetchTokenStatus()\n }, timeout.current)\n return () => {\n clearInterval(waiting.current)\n }\n // eslint-disable-next-line\n }, [])\n\n // const fetchMetricsReport = useCallback(async () => {\n // setDownloadLoading(true)\n // await logic\n // .triggerReportGeneration()\n // .then(response => {\n // if (\n // response != null &&\n // response.data != null &&\n // response.data.url != null\n // ) {\n // logic.downloadFile(response.data.url)\n // }\n // })\n // .catch(err => {\n // console.log({ err })\n // toast.error(t('metrics.download_error'))\n // if (err == null || err.response == null) {\n // actions.serverError()\n // }\n // })\n // .finally(() => setDownloadLoading(false))\n // }, [actions, t])\n const removeLoading = useCallback(e => setLoading(false), [])\n return (\n \n {loading ? : null}\n\n \n \n {/* \n \n {t('metrics.download_button')}\n \n {downloadLoading && }\n */}\n \n {superSetData != null && (\n \n )}\n \n )\n}\n\nexport default Metrics\n\nconst Wrapper = styled.div`\n height: 100%;\n width: 100%;\n position: relative;\n\n padding: 0;\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n`\n// const DownloadWrapper = styled.div`\n// position: relative;\n// display: flex;\n// align-items: center;\n// justify-content: center;\n// margin: 0.5rem 0px 0.5rem auto;\n// height: 100%;\n// `\n\n// const ButtonLoading = styled(CircularProgress)`\n// position: absolute;\n\n// right: 0;\n// left: 0;\n// top: 0;\n// bottom: 0;\n// margin: auto;\n\n// z-index: 1001;\n// `\nconst BreadCrumbRow = styled.div`\n display: grid;\n grid-template-columns: 1fr;\n row-gap: 1rem;\n flex: 0 0 auto;\n padding: 0 2rem;\n\n ${({ theme }) => theme.smallDesktop`\n display: flex;\n justify-content: space-between;\n align-items: center;\n min-height: 2.5rem;\n `}\n`\n","import axios from 'axios'\nimport mapValues from 'lodash/mapValues'\nimport ValidationError from 'utils/ValidationError'\n\nimport * as Check from 'utils/validations'\nimport { BASE_API_URL } from 'config'\nconst SET_PASSWORD_URL = BASE_API_URL + '/password-reset-confirm/'\n\nconst VALIDATIONS = {\n password: [Check.isRequired],\n passwordConfirm: [Check.isRequired],\n token: []\n}\n\nconst logic = {\n defaultValues: {\n password: { value: '' },\n passwordConfirm: { value: '' },\n token: { value: null }\n },\n setPassword: (form, setForm) => {\n return Promise.resolve().then(() => {\n const validation = Check.checkValidation(form, VALIDATIONS)\n const passwordValidation = Check.passwordsMatch(\n form.password.value,\n form.passwordConfirm.value\n )\n if (validation.invalid || !passwordValidation.valid) {\n setForm({\n ...validation.form,\n passwordConfirm: {\n ...validation.form.passwordConfirm,\n ...passwordValidation\n }\n })\n throw new ValidationError()\n }\n setForm({ ...validation.form })\n\n const params = mapValues(form, ({ value }) => value)\n return axios.post(SET_PASSWORD_URL, { ...params })\n })\n }\n}\n\nexport default logic\n","import React, { useState, useEffect, useContext, useCallback } from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport { Link } from 'react-router-dom'\nimport useQuery from 'utils/useQuery'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\n\nimport TitleStyle from 'styled/TitleStyle'\n\nimport Container from 'components/Container'\nimport StyledButton from 'components/StyledButton'\n\nimport InputAndLabel from 'containers/InputAndLabel'\n\nimport Background from 'images/background_smart_parking.jpg'\nimport ErrorIcon from 'icons/ErrorIcon'\nimport SuccessIcon from 'icons/SuccessIcon'\n\nimport logic from './logic'\n\nconst AccountSuccess = ({ children, ...props }) => {\n const { actions } = useContext(AuthContext)\n\n const { t } = useTranslation()\n const query = useQuery()\n const token = query.get('token')\n const [form, setForm] = useState(logic.defaultValues)\n const [submitState, setSubmitState] = useState({\n hasSubmitted: false,\n submitting: false,\n error: null,\n success: false\n })\n\n useEffect(() => {\n if (token != null) {\n handleChange('token', token)\n }\n // eslint-disable-next-line\n }, [])\n\n const handleSubmit = useCallback(\n event => {\n event.preventDefault()\n // juntar estes states\n setSubmitState(submitState => ({\n ...submitState,\n error: null,\n hasSubmitted: true,\n submitting: true\n }))\n logic\n .setPassword(form, form => setForm({ ...form }))\n .then(response => {\n setSubmitState(submitState => ({\n ...submitState,\n success: true,\n submitting: false\n }))\n })\n .catch(err => {\n console.log({ err })\n\n if (err == null || err.response == null) {\n actions.serverError()\n }\n if (err.response != null && err.response.data != null) {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false,\n error: true\n }))\n } else {\n setSubmitState(submitState => ({\n ...submitState,\n submitting: false\n }))\n }\n })\n },\n [actions, form]\n )\n\n const handleChange = useCallback(\n (key, value) => {\n setForm({\n ...form,\n [key]: {\n ...form[key],\n value: value\n }\n })\n },\n [form]\n )\n\n const memoHandleChangeValue = useCallback(\n name => e => {\n handleChange(name, e.target.value)\n },\n [handleChange]\n )\n\n const buildBody = useCallback(() => {\n if (token != null) {\n if (form != null && !submitState.success && !submitState.error) {\n return (\n \n \n {t('set_password.title')}\n \n \n \n \n \n \n \n {t('set_password.title')}\n \n \n \n )\n } else if (submitState.success && !submitState.error) {\n return (\n \n \n {t('set_password.success_text')}\n {t('back_main_page')}\n \n )\n }\n }\n return (\n \n \n {t('set_password.error_text')}\n {t('set_password.try_again')}\n \n )\n }, [form, handleSubmit, submitState, t, token, memoHandleChangeValue])\n\n return (\n \n \n \n {buildBody()}\n \n )\n}\n\nexport default AccountSuccess\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n height: ${({ height }) => height};\n position: relative;\n overflow: visible;\n\n background-color: var(--backgroud-color);\n`\n\nconst BackgroundImage = styled.img`\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -10;\n left: 0;\n top: 0;\n object-fit: cover;\n opacity: 0.3;\n background: ${({ src }) => `url(${src}) center / cover`};\n`\n\nconst Overlay = styled.div`\n width: 100%;\n height: 100%;\n position: absolute;\n z-index: -1;\n left: 0;\n top: 0;\n opacity: 0.25;\n background-color: var(--overlay-background-color);\n`\n\nconst Title = styled.h1`\n ${TitleStyle}\n`\n\nconst TitleWrapper = styled.div`\n display: flex;\n align-items: center;\n position: relative;\n margin-bottom: 2rem;\n`\n\nconst StyledForm = styled.form`\n grid-column: 1/5;\n background-color: var(--white-color);\n display: flex;\n flex-direction: column;\n\n padding: 2rem;\n margin: auto 0;\n\n border: 1px solid var(--platinium-gray-color);\n box-shadow: 0 0 0.375rem 0 var(--box-shadow-black-half-opacity);\n\n ${({ theme }) => theme.smallDesktop`\n grid-column: 5/9;\n\n `}\n`\n\nconst InputWrapper = styled.div`\n width: 100%;\n display: flex;\n flex-direction: column;\n`\n\nconst ButtonWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: flex-end;\n display: grid;\n grid-template-columns: minmax(12.375rem, 1fr);\n`\n\nconst GoBackLink = styled(Link)`\n width: fit-content;\n\n margin: 1rem auto;\n font-size: 0.875rem;\n text-decoration: underline;\n color: var(--primary-color);\n transition: opacity 0.3s ease-in-out;\n\n &:hover {\n transition: opacity 0.3s ease-in-out;\n opacity: 0.5;\n }\n`\n\nconst SuccessWrapper = styled.div`\n grid-column: 1/5;\n\n background-color: var(--white-color);\n display: flex;\n flex-direction: column;\n\n padding: 2rem;\n margin: auto 0;\n\n border: 1px solid var(--platinium-gray-color);\n box-shadow: 0 0 0.375rem 0 var(--box-shadow-black-half-opacity);\n ${({ theme }) => theme.smallDesktop`\n grid-column: 5/9;\n \n `}\n`\n\nconst SuccessMessage = styled.p`\n font-size: 1rem;\n text-align: center;\n margin: 1.5rem auto;\n line-height: 1.25rem;\n`\n","import { useLocation } from 'react-router-dom'\n\nexport default () => {\n return new URLSearchParams(useLocation().search)\n}\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import React, { useEffect } from 'react'\nimport { MOBILE_DEEPLINK } from 'config'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport Container from 'components/Container'\nimport MobileIlustration from 'icons/MobileIlustration'\n\nconst RedirectToMobile = () => {\n const { t } = useTranslation()\n\n useEffect(() => {\n const currentURL = window.location.href\n\n window.location = currentURL.replace(/^https?/g, MOBILE_DEEPLINK)\n }, [])\n return (\n \n \n \n \n {t('mobile')}\n {t('redirect_to_mobile')}\n \n \n \n )\n}\n\nexport default RedirectToMobile\n\nconst Wrapper = styled.div`\n width: 100%;\n height: 100%;\n height: ${({ height }) => height};\n position: relative;\n overflow: auto;\n\n background-color: var(--backgroud-color);\n`\n\nconst ContentWrapper = styled.div`\n grid-column: 1/5;\n margin: auto;\n\n text-align: center;\n\n ${({ theme }) => theme.smallDesktop`\ngrid-column: 3/10;\n\n `}\n`\n\nconst Title = styled.h1`\n color: var(--primary-color);\n font-size: 3rem;\n font-weight: 700;\n letter-spacing: 0;\n line-height: 1em;\n\n margin: 2.5rem auto 1rem;\n`\nconst Message = styled.p`\n color: var(--error-page-text-color);\n font-size: 1.5rem;\n letter-spacing: 0;\n line-height: 1.5em;\n\n margin-bottom: 3rem;\n`\n","/**\n * -----------------------------------------------------------------------------\n * Copyright (C) Ubiwhere, LDA\n * 2012-2018\n *\n *\n * The reproduction, transmission or use of this document or its contents is not\n * permitted without express written authorization. All rights, including rights\n * created by patent grant or registration of a utility model or design, are\n * reserved. Modifications made to this document are restricted to authorized\n * personnel only. Technical specifications and features are binding only when\n * specifically and expressly agreed upon in a written contract.\n * -----------------------------------------------------------------------------\n *\n * Router\n * Add new routes here\n */\nimport toArray from 'lodash/toArray'\n\n// Import page components bellow here\n// Keep them organized as the routes object\nimport HomePage from 'scenes/HomePage'\nimport Login from 'scenes/Login'\nimport NotFound from 'scenes/NotFound'\n\nimport Areas from 'scenes/Areas'\nimport Hardware from 'scenes/Hardware'\nimport Events from 'scenes/Events'\nimport Spots from 'scenes/Spots'\nimport ServerError from 'scenes/ServerError'\nimport RecoverPassword from 'scenes/RecoverPassword'\nimport Metrics from 'scenes/Metrics'\nimport PasswordSet from 'scenes/PasswordSet'\nimport RedirectToMobile from 'scenes/RedirectToMobile'\n// Define routes here\nexport const Routes = {\n Login: {\n key: 'login',\n name: 'Login',\n path: '/login/',\n component: Login,\n crumb: ['inicio'],\n exact: true\n },\n\n HomePage: {\n key: 'homepage',\n name: 'HomePage',\n path: '/',\n component: HomePage,\n crumb: ['inicio'],\n exact: true,\n private: true\n },\n\n Areas: {\n key: 'areas',\n name: 'Areas',\n path: '/areas/',\n component: Areas,\n crumb: ['inicio'],\n exact: false,\n private: true\n },\n\n Hardware: {\n key: 'assets',\n name: 'Hardware',\n path: '/assets/',\n component: Hardware,\n crumb: ['inicio'],\n exact: false,\n private: true\n },\n\n Events: {\n key: 'events',\n name: 'Events',\n path: '/events/',\n component: Events,\n crumb: ['inicio'],\n exact: true,\n private: true\n },\n\n Spots: {\n key: 'spots',\n name: 'Spots',\n path: '/spots/',\n component: Spots,\n crumb: ['inicio'],\n exact: false,\n private: true\n },\n\n ServerError: {\n key: 'ServerError',\n name: 'ServerError',\n path: '/error/',\n component: ServerError,\n crumb: ['inicio'],\n exact: true,\n private: false\n },\n\n RecoverPassword: {\n key: 'RecoverPassword',\n name: 'RecoverPassword',\n path: '/recover/',\n component: RecoverPassword,\n crumb: ['inicio'],\n exact: true,\n private: false\n },\n\n Metrics: {\n key: 'Metrics',\n name: 'Metrics',\n path: '/metrics/',\n component: Metrics,\n crumb: ['inicio'],\n exact: true,\n private: true\n },\n ActivateAccountMobile: {\n key: 'ActivateAccountMobile',\n name: 'ActivateAccountMobile',\n path: '/activate_account/',\n component: RedirectToMobile,\n crumb: ['inicio'],\n private: false\n },\n PasswordSetMobile: {\n key: 'PasswordSetMobile',\n name: 'PasswordSetMobile',\n path: '/mobile/password/set/',\n component: RedirectToMobile,\n crumb: ['inicio'],\n exact: true,\n private: false\n },\n PasswordSet: {\n key: 'PasswordSet',\n name: 'PasswordSet',\n path: '/password/set/',\n component: PasswordSet,\n crumb: ['inicio'],\n exact: true,\n private: false\n },\n\n notfound: {\n key: 'notfound',\n name: 'NotFound',\n path: '/not-found/',\n component: NotFound,\n crumb: ['inicio'],\n exact: true,\n private: false\n }\n}\n\n// Maps don't work on object convert it to an array\nexport default toArray(Routes)\n","import React from 'react'\nimport { Context } from 'providers/AuthProvider/authProvider'\n\nconst withAuthState = ComposedComponent => props => (\n \n {({ store, actions }) => (\n \n )}\n \n)\n\nexport default withAuthState\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","\nimport React, { useState, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport PortugalIcon from 'icons/PortugalIcon'\nimport UKIcon from 'icons/UKIcon'\n\nexport default ({ children, ...props }) => {\n const { i18n } = useTranslation()\n const [isVisible, setIsVisible] = useState(false)\n\n const onPtFlagClick = () => {\n i18n.changeLanguage('pt')\n }\n const onEnFlagClick = () => {\n i18n.changeLanguage('en')\n }\n\n useEffect(() => {\n if (isVisible) {\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = ''\n }\n\n return () => {\n document.body.style.overflow = ''\n }\n }, [isVisible])\n\n const renderFlags = () => {\n if (i18n.language === 'pt') {\n return (\n <>\n \n \n \n \n \n \n >\n )\n } else {\n return (\n <>\n \n \n \n \n \n \n >\n )\n }\n }\n return (\n setIsVisible(!isVisible)}>\n {i18n.language === 'pt' && }\n {i18n.language === 'en' && }\n \n \n {renderFlags()}\n \n \n )\n}\n\nexport const Switch = styled.div`\n position: absolute;\n top: -5px;\n right: -5px;\n z-index: 150;\n\n opacity: ${({ isVisible }) => (isVisible ? 1 : 0)};\n visibility: ${({ isVisible }) => (isVisible ? 'visible' : 'hidden')};\n\n transition: all 0.2s;\n\n height: 100px;\n`\n\nexport const SwitchContent = styled.div`\n height: ${({ isOpen }) => (isOpen ? 'auto' : '60px')};\n overflow: hidden;\n z-index: 10;\n\n display: flex;\n flex-direction: column;\n\n padding: 8px;\n border-radius: 40px;\n\n background-color: ${({ theme, isOpen }) =>\n isOpen ? 'var(--white-color)' : 'transparent'};\n box-shadow: ${({ isOpen }) =>\n isOpen ? '0 20px 24px 0 rgba(0, 0, 0, 0.1)' : 'none'};\n\n transition: all 200ms ease-in;\n`\n\nexport const SwitchButton = styled.div`\n display: block;\n cursor: pointer;\n\n & > svg {\n display: block;\n }\n\n &:not(:first-child) {\n &::before {\n content: \"\";\n display: block;\n\n max-width: 100%;\n height: 1px;\n margin: 12px 4px;\n\n background: ${({ theme }) => theme.inactiveColor};\n opacity: 0.2;\n }\n }\n`\n\nexport const BackgroundOverlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(17, 17, 17, 0.2);\n z-index: 30;\n\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n visibility: ${({ isOpen }) => (isOpen ? 'visible' : 'hidden')};\n\n transition: all 100ms ease-in;\n`\n\nconst IconWrapper = styled.div`\n cursor: pointer;\n margin-left: 1rem;\n\n height: 2rem;\n width: 2rem;\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n position: relative;\n`\n","import React from 'react'\nimport styled, { css } from 'styled-components'\n\nexport default ({ children, ...props }) => (\n \n \n \n \n \n)\n\nconst Wrapper = styled.div`\n display: inline-flex;\n align-items: center;\n height: 1rem;\n cursor: pointer;\n transition-property: opacity, filter;\n transition-duration: 0.15s;\n transition-timing-function: linear;\n font: inherit;\n color: inherit;\n text-transform: none;\n background-color: transparent;\n border: 0;\n margin: 0;\n margin-left: 1rem;\n overflow: visible;\n\n &:focus, &:active {\n -webkit-tap-highlight-color: transparent;\n }\n`\n\nconst HamburgerBox = styled.div`\n width: 1.5rem;\n height: 2rem;\n display: inline-block;\n position: relative;\n`\n\nconst HamburgerInner = styled.div`\n display: block;\n top: 50%;\n margin: auto;\n &,\n &::before,\n &::after {\n width: 1.75rem;\n height: 0.2rem;\n background-color: var(--white-color);\n border-radius: 0.25rem;\n position: absolute;\n transition-property: transform;\n transition-duration: 0.15s;\n transition-timing-function: ease;\n }\n &::before,\n &::after {\n content: '';\n display: block;\n }\n &::before {\n top: -0.5rem;\n }\n &::after {\n bottom: -0.5rem;\n }\n\n ${props =>\n props.isActive &&\n css`\n &,\n &::before,\n &::after {\n background-color: var(--white-color);\n }\n\n & {\n transform: rotate(225deg);\n transition-delay: 0.12s;\n transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n &::before {\n top: 0;\n opacity: 0;\n transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out;\n }\n &::after {\n bottom: 0;\n transform: rotate(-90deg);\n transition: bottom 0.1s ease-out,\n transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n `}\n\n transition-duration: 0.22s;\n transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n ${'' /* ${Wrapper} &::before {\n transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in;\n }\n ${Wrapper} &::after {\n transition: bottom 0.1s 0.25s ease-in,\n transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19);\n } */}\n`\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport { Link } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nexport default ({ children, ...props }) => {\n const { icon, name, path, active } = props\n const { t } = useTranslation()\n const Icon = icon\n\n return (\n \n \n \n \n {t(name)}\n \n )\n}\n\nconst Wrapper = styled(Link)`\n padding: 0.5rem 1.5rem;\n\n display: flex;\n align-items: center;\n background-color: transparent;\n color: var(--white-color);\n transition: background-color 0.3s ease-in-out;\n overflow: hidden;\n\n &:hover,\n &:focus,\n &:active {\n background-color: var(--darker-primary-color);\n transition: background-color 0.3s ease-in-out;\n }\n\n ${({ theme }) => theme.smallDesktop`\n padding: 1.5rem;\n\n background-color: var(--dark-primary-color);\n\n ${props =>\n props.active &&\n css`\n font-weight: bold;\n background-color: var(--darker-primary-color);\n `}\n`};\n\n ${props =>\n props.active &&\n css`\n font-weight: bold;\n background-color: var(--darker-primary-color);\n `}\n`\n\nconst Label = styled.span`\n font-size: 1rem;\n letter-spacing: 0;\n line-height: 1em;\n\n font-weight: inherit;\n color: inherit;\n\n white-space: nowrap;\n`\n\nconst IconWrapper = styled.div`\n min-width: 1rem;\n margin-right: 1rem;\n\n ${({ theme }) => theme.smallDesktop`\n min-width: 2rem;\n margin-right: 1.5rem;\n`}\n`\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import MapIcon from 'icons/MapIcon'\nimport AreasIcon from 'icons/AreasIcon'\nimport AssetsIcon from 'icons/AssetsIcon'\n// import EventsIcon from 'icons/EventsIcon'\nimport MetricsIcon from 'icons/MetricsIcon'\nimport SpotsIcon from 'icons/SpotsIcon'\n\nexport const SECTIONS = [\n {\n name: 'sections.homepage',\n icon: MapIcon,\n path: '/',\n key: 'homepage'\n },\n {\n name: 'sections.areas',\n icon: AreasIcon,\n path: '/areas/',\n key: 'areas'\n },\n {\n name: 'sections.spots',\n icon: SpotsIcon,\n path: '/spots/',\n key: 'spots'\n },\n {\n name: 'sections.assets',\n icon: AssetsIcon,\n path: '/assets/',\n key: 'assets'\n },\n /* {\n name: 'sections.events',\n icon: EventsIcon,\n path: '/events/',\n key: 'events'\n }, */\n {\n name: 'sections.metrics',\n icon: MetricsIcon,\n path: '/metrics/',\n key: 'metrics'\n }\n]\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n )\n}\n\nexport default SvgComponent\n","import * as React from 'react'\n\nfunction SvgComponent (props) {\n return (\n \n \n \n )\n}\n\nexport default SvgComponent\n","import React, { useContext, useState, useEffect } from 'react'\nimport styled, { css } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport { Link, withRouter, matchPath } from 'react-router-dom'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\nimport withResponsive from 'providers/ResponsiveHandler/withResponsive'\n\nimport { UNAVAILABLE_FEATURES } from 'config'\n\nimport Container from 'components/Container'\nimport LanguageSwitch from 'components/LanguageSwitch'\nimport HamburgerMenu from 'components/HamburgerMenu'\nimport SidebarItem from 'components/SidebarItem'\n\nimport { SECTIONS } from 'containers/Sidebar/utils'\n\nimport BrandIcon from 'icons/BrandIcon'\nimport UserIcon from 'icons/UserIcon'\nimport LogoutIcon from 'icons/LogoutIcon'\n\nexport default withResponsive(\n withRouter(({ children, ...props }) => {\n const {\n store: { isLoggedIn, user },\n actions: { logout }\n } = useContext(AuthContext)\n const { t } = useTranslation()\n\n const [open, setOpen] = useState(false)\n\n const { location, responsiveHandlers } = props\n const isActive = path => {\n const match = matchPath(path.replace(/\\//g, ''), {\n path:\n location.pathname.split('/').filter(el => el !== '')[0] != null\n ? location.pathname.split('/').filter(el => el !== '')[0]\n : '',\n exact: true\n })\n return match != null\n }\n\n useEffect(() => {\n setOpen(false)\n }, [location])\n\n return (\n \n \n \n \n \n \n \n {responsiveHandlers.isDesktop && (\n \n \n\n {isLoggedIn && user != null && (\n \n {user.username}\n \n \n \n \n {t('logout')}\n \n \n \n \n \n )}\n \n )}\n \n \n {isLoggedIn && user != null && (\n <>\n setOpen(open => !open)}\n />\n \n {SECTIONS.filter(\n el => !UNAVAILABLE_FEATURES.includes(el.key)\n ).map((route, index) => (\n \n ))}\n \n \n \n {user.username}\n \n \n \n {t('logout')}\n \n \n \n >\n )}\n \n \n \n )\n })\n)\n\nconst CustomContainer = styled(Container)`\n ${({ theme }) => theme.smallDesktop`\n\n max-width: calc(100% - 4.5rem);\n margin-left: 1.5rem;\n `}\n`\n\nconst Wrapper = styled.div`\n position: fixed;\n\n width: 100%;\n background-color: var(--primary-color);\n padding: 0.625rem 0;\n\n display: flex;\n align-items: center;\n\n box-shadow: 0 0 0.25rem 0 rgba(0, 0, 0, 0.4);\n\n z-index: 101;\n`\n\nconst BrandWrapper = styled.div`\n grid-column: 1/3;\n display: flex;\n align-items: center;\n\n height: 2.5rem;\n`\n\nconst Brand = styled(Link)`\n color: var(--white-color);\n font-size: 1.5rem;\n line-height: 1em;\n height: fit-content;\n margin: auto 0;\n`\n\nconst Username = styled.p`\n margin-right: 0.5rem;\n text-transform: uppercase;\n color: inherit;\n font-weight: 500;\n`\n\nconst RightSide = styled.div`\n display: none;\n ${({ theme }) => theme.smallDesktop`\n grid-column: 11/13;\n display: flex;\n justify-content: flex-end;\n\n `}\n`\n\nconst MenuItem = styled.div`\n display: flex;\n justify-content: space-between;\n width: 100%;\n align-items: center;\n padding: 0 0.5rem;\n cursor: pointer;\n color: var(--primary-color);\n background-color: var(--white-color);\n\n & path {\n fill: var(--primary-color);\n }\n\n &:hover,\n &:active,\n &:focus {\n background-color: var(--primary-color);\n color: var(--white-color);\n\n & path {\n fill: var(--white-color);\n }\n }\n`\n\nconst ProfileMenuWrapper = styled.div`\n top: 2rem;\n right: 0rem;\n\n display: none;\n position: absolute;\n background-color: transparent;\n z-index: 10;\n`\n\nconst ProfileMenu = styled.div`\n background-color: var(--white-color);\n padding: 0.5rem 0;\n min-width: 200px;\n margin-top: 0.5rem;\n\n box-shadow: 0 0.5rem 1rem 0px rgba(0, 0, 0, 0.2);\n`\n\nconst AccountWrapper = styled.div`\n margin-left: 1rem;\n display: flex;\n align-items: center;\n color: var(--white-color);\n position: relative;\n\n &:hover ${ProfileMenuWrapper} {\n display: block;\n }\n`\n\nconst MenuLabel = styled.p`\n color: inherit;\n font-size: 1rem;\n line-height: 1em;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n margin-left: 1rem;\n\n ${({ theme }) => theme.smallDesktop`\n margin-left: 0;\n margin-right: 1rem;\n `}\n`\n\nconst HamburgerWrapper = styled.div`\n grid-column: 3/5;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n ${({ theme }) => theme.smallDesktop`\n display: none;\n `}\n`\n\nconst MobileMenu = styled.div`\n display: flex;\n flex-direction: column;\n position: fixed;\n height: calc(100vh - 3.75rem);\n width: 100vw;\n opacity: 0;\n z-index: 100;\n background: var(--primary-color);\n top: 3.75rem;\n left: 0;\n transform: translateX(-100%);\n transition: all 0.3s ease-out;\n padding: 2rem 0 0;\n ${props =>\n props.isActive &&\n css`\n transition: all 0.3s ease-out;\n opacity: 1;\n transform: translateX(0);\n `}\n ${({ theme }) => theme.smallDesktop`\n display: none;\n `}\n`\n\nconst StyledBottomItemsWrapper = styled.div`\n margin: auto 0 0;\n`\nconst StyledMenuItem = styled.div`\n padding: 0.5rem 1.5rem;\n\n display: flex;\n align-items: center;\n\n color: var(--white-color);\n transition: background-color 0.3s ease-in-out;\n overflow: hidden;\n\n &:hover,\n &:focus,\n &:active {\n background-color: var(--darker-primary-color);\n transition: background-color 0.3s ease-in-out;\n }\n\n & + & {\n background-color: var(--dark-primary-color);\n }\n`\n","import React, { memo, useState, useCallback, useMemo } from 'react'\nimport styled, { withTheme } from 'styled-components'\nimport { withRouter, matchPath } from 'react-router-dom'\nimport { SIDEBAR_LOGO, UNAVAILABLE_FEATURES } from 'config'\n\nimport { animated, useSpring } from 'react-spring'\n\nimport { SECTIONS } from './utils'\n\nimport SidebarItem from 'components/SidebarItem'\n\n// import Citibrain from 'images/citibrain_logo.png'\nimport Urbsense from 'images/urbsense_logo.png'\n\nconst variants = {\n open: '19rem',\n closed: '5rem'\n}\n\nconst Sidebar = ({ children, ...props }) => {\n const [isOpen, setIsOpen] = useState(false)\n const { location } = props\n const isActive = useCallback(\n path => {\n const match = matchPath(path?.replace(/\\//g, ''), {\n path:\n location?.pathname?.split('/')?.filter(el => el !== '')?.[0] ?? '',\n exact: true\n })\n return match != null\n },\n [location?.pathname]\n )\n\n const { width } = useSpring({\n width: isOpen ? variants.open : variants.closed\n })\n\n const items = useMemo(() => SECTIONS.filter(el => !UNAVAILABLE_FEATURES.includes(el.key)).map(\n (route, index) => (\n \n )\n ), [isActive])\n\n const handleEnter = useCallback(\n () => setIsOpen(true),\n []\n )\n\n const handleLeave = useCallback(\n () => setIsOpen(false),\n []\n )\n\n return (\n \n {items}\n {/* {SIDEBAR_LOGO === 'citibrain' && (\n \n \n \n )} */}\n {SIDEBAR_LOGO === 'urbsense' && (\n \n \n \n )}\n \n )\n}\n\nexport default memo(withTheme(withRouter(Sidebar)))\n\nconst SidebarWrapper = styled(animated.div)`\n display: none;\n\n ${({ theme }) => theme.smallDesktop`\n width: 5rem;\n min-height: calc(100vh - 3.75rem);\n height: calc(100% - 3.75rem);\n position: fixed;\n\n top: 3.75rem;\n left: 0;\n\n background-color: var(--dark-primary-color);\n z-index: 101;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`}\n`\n\nconst StyledImage = styled.img`\n object-fit: contain;\n width: 6.25rem;\n max-width: 6.25rem;\n\n overflow: hidden;\n`\n\nconst StyledLink = styled.a`\n width: 19rem;\n display: flex;\n justify-content: center;\n margin: auto 0 2.5rem;\n`\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgUAAABZCAYAAACuT1eoAAAACXBIWXMAABYlAAAWJQFJUiTwAAAFEGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTctMDEtMzFUMTE6NTk6NTVaIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0xMC0wMVQxMjo1NDoyOSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0xMC0wMVQxMjo1NDoyOSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0ZWE5Y2I5Yi1hZWU4LTQyYzMt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\"","export default __webpack_public_path__ + \"static/media/urbsense_black_logo.f7c1ef46.png\";","import React from 'react'\nimport styled from 'styled-components'\n\nimport UbiwhereLogo from 'images/ubiwhere_logo.png'\nimport UrbsenseLogo from 'images/urbsense_black_logo.png'\n\nexport default ({ children, ...props }) => (\n \n \n \n \n)\n\nconst Wrapper = styled.div`\n /* position: fixed;\n bottom: 0;\n right: 0; */\n margin-top: auto;\n margin-left: 5rem;\n padding: 1rem 3rem 1rem;\n width: calc(100% - 5rem);\n background-color: var(--white-color);\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nconst ImageLogo = styled.img`\n height: 2.5rem;\n object-fit: contain;\n\n & + & {\n margin-left: 2rem;\n }\n`\n","export default \"data:image/png;base64,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\"","import React, { useContext } from 'react'\nimport { Route, Redirect } from 'react-router-dom'\n\nimport { Context as AuthContext } from 'providers/AuthProvider/authProvider'\n\nexport default ({ children, ...props }) => {\n const {\n store: { isLoggedIn }\n } = useContext(AuthContext)\n const { component: Component, redirectTo = '/login/', ...rest } = props\n return (\n \n isLoggedIn ? : }\n {...rest}\n />\n )\n}\n","import React, { useEffect } from 'react'\nimport { hot } from 'react-hot-loader/root'\nimport styled, { ThemeProvider } from 'styled-components'\nimport { ToastContainer } from 'react-toastify'\nimport 'react-toastify/dist/ReactToastify.css'\nimport GlobalStyle, { media, materialTheme } from 'globalStyles'\nimport { ThemeProvider as MaterialThemeProvider } from '@material-ui/core/styles'\nimport { useTranslation } from 'react-i18next'\n\nimport { Switch, Route, withRouter, Redirect } from 'react-router'\nimport Routes from 'routes'\nimport { UNAVAILABLE_FEATURES } from 'config'\n\nimport withAuthState from 'providers/AuthProvider/withAuthState'\nimport SocketProvider from 'providers/SocketProvider/socketProvider'\n\nimport { setLanguageInterceptor } from 'interceptors'\n\nimport Navbar from 'containers/Navbar'\nimport Sidebar from 'containers/Sidebar'\nimport Footer from 'containers/Footer'\n\nimport PrivateRoute from 'components/PrivateRoute'\n\nconst App = ({ children, ...props }) => {\n const { i18n } = useTranslation()\n\n const {\n store: { isLoggedIn }\n } = props\n\n useEffect(() => {\n if (i18n != null && i18n.language != null) {\n switch (i18n.language) {\n case 'pt':\n setLanguageInterceptor('pt-PT')\n break\n case 'en':\n setLanguageInterceptor('en-GB')\n break\n\n default:\n setLanguageInterceptor('pt-PT')\n break\n }\n }\n // eslint-disable-next-line\n }, [i18n.language])\n\n return (\n \n \n \n \n \n \n {isLoggedIn && }\n \n \n {Routes.filter(\n el => !UNAVAILABLE_FEATURES.includes(el.key)\n ).map(route =>\n route.private ? (\n \n ) : (\n \n )\n )}\n \n \n \n {isLoggedIn && !UNAVAILABLE_FEATURES.includes('footer') && (\n \n )}\n \n \n \n \n \n )\n}\n\nexport default hot(withRouter(withAuthState(App)))\n\nconst Main = styled.main`\n width: 100%;\n display: flex;\n flex-direction: column;\n`\n\nconst SceneWrapper = styled.div`\n height: calc(100vh - 3.75rem);\n margin-top: 3.75rem;\n /* height: 100%; */\n width: 100%;\n flex: 1 100%;\n z-index: 1;\n overflow: hidden;\n\n ${({ theme }) => theme.smallDesktop`\n\n width: ${({ isLoggedIn }) => (isLoggedIn ? 'calc(100% - 5rem)' : '100%')};\n margin-left: ${({ isLoggedIn }) => (isLoggedIn ? '5rem' : '0')};\n\n`}\n`\n","// import { hot } from 'react-hot-loader/root'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport * as serviceWorker from './serviceWorker'\nimport { BrowserRouter } from 'react-router-dom'\nimport './translations/i18n'\nimport App from './containers/App'\nimport AuthProvider from 'providers/AuthProvider/authProvider'\nimport ResponsiveProvider from 'providers/ResponsiveHandler/responsiveProvider'\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n"],"sourceRoot":""}
{msg}