{"version":3,"sources":["lib/types.ts","Components/LogoutButton.tsx","Store/Store.tsx","SidebarMenu.tsx","images/waterlinked-logo.png","lib/fetch.ts","lib/functionality.ts","Components/NotyfContext.ts","Components/UIElements/SiteSelect.tsx","TopMenu.tsx","Components/Catch.tsx","Components/ErrorBoundary.tsx","Components/FactoryResetButton.tsx","Components/LEDButton.tsx","Components/releases.ts","Components/ReleaseNotes.tsx","Components/VersionInfo.tsx","Routes/About.tsx","Routes/Admin.tsx","lib/format.ts","Core/AppSettings.tsx","Components/Message.tsx","Components/Analytics/SingleGraph.tsx","Components/Analytics/GroupedByTypeGraph.tsx","Routes/CsvDownload.tsx","Components/Analytics/GraphOptions.tsx","Components/Analytics/ViewManager.tsx","Routes/AnalyticsV2.tsx","lib/colors.ts","Components/3D/Materials/Cage4DepthMaterial.tsx","Components/3D/Objects/CageOverviewCage.tsx","Components/3D/Materials/OceanMaterial.tsx","Components/3D/Objects/OceanPlane.tsx","Components/TimelineGraph.tsx","sensorNew.svg","Components/UIElements/SensorIcon.tsx","Components/CageOverview/CageGraphGridNew.tsx","Components/CageOverview/CageOverviewAlarms.tsx","Routes/CageOverview.tsx","Components/3D/Materials/Cage2DepthSegmentsMaterial.tsx","Components/3D/Objects/Cage.tsx","Components/3D/Objects/FeedBarge.tsx","Components/3D/Objects/HeightPlane.tsx","Components/UIElements/AlarmDisplay.tsx","Components/UIElements/CompassRose.tsx","Routes/SiteView.tsx","Components/UIElements/RightMenu.tsx","Components/UIElements/SegmentPicker.tsx","Components/AlarmList/AlarmListStore.tsx","Components/AlarmList/ConnectAlarmDialogue.tsx","Components/AlarmList/AlarmForm.tsx","Components/AlarmList/CreateAlarmDialogue.tsx","Components/AlarmList/DisconnectAlarmDialogue.tsx","Components/AlarmList/EditAlarmDialogue.tsx","Components/AlarmList/AlarmList.tsx","Components/SensorList/ConnectSensorDialogue.tsx","Components/SensorList/AddNewSensorDialogue.tsx","Components/SensorList/DisconnectSensorDialogue.tsx","Components/SensorList/EditSensorDialogue.tsx","Components/SensorList/SensorList.tsx","Components/Dashboard/RightMenuDashboard.tsx","Routes/Dashboard.tsx","Components/Diagnostics/CorrelatorGraphManual.tsx","Components/Diagnostics/DiagnosticReport.tsx","Components/Diagnostics/SensorMessages.tsx","Routes/Diagnostic.tsx","Routes/EditSite.tsx","Routes/ImageUpload.tsx","Components/OverviewMap/LeafletOverviewMap.tsx","images/marker.png","Routes/OverviewMap.tsx","Routes/PrivacyPolicy.tsx","Components/SensorConfig/SensorConfigStore.tsx","Routes/SensorConfiguration.tsx","Routes/Time.tsx","Components/Welcome/Splash.tsx","Components/Welcome/StepIndicators.tsx","Components/Welcome/StepContent.tsx","Components/Welcome/Checklist.tsx","Components/Welcome/SetupInternet.tsx","Components/Welcome/SetupSite.tsx","Components/Welcome/SetupReceivers.tsx","Components/Placeholders.tsx","Components/Welcome/SetupSensors.tsx","Components/Welcome/Footer.tsx","Routes/Welcome.tsx","Components/Welcome/SetupComplete.tsx","Routes/Help.tsx","AppMain.tsx","App.tsx","Routes/LoginButton.tsx","AuthApp.tsx","reportWebVitals.ts","index.tsx"],"names":["MapCageView","LogoutButton","logout","useAuth0","Menu","Item","as","Link","to","onClick","returnTo","window","location","origin","e","console","log","Icon","name","className","AppStore","breadcrumb","user","auth0","local","node_key","node_kind","auth0_user_id","first_time_setup_complete","makeAutoObservable","this","AuthStore","getAccessTokenSilently","Promise","resolve","AnalyticsStore","viewData","graph_settings","live","grouped_graphs","data_points","date_from","moment","Date","startOf","subtract","getTimezoneOffset","unix","date_to","endOf","graph_size","sensors","getSensorsGroupedByMeasurementType","grouped","length","forEach","measurement_type","push","preset","runInAction","JSON","parse","stringify","sensor","measurementType","checked","sensorLocationMeta","locationName","sensorIndex","isSensorAndMeasurementSelected","sensor_id","sensor_type","newSensorObject","sensor_location_meta","cage_name","splice","sensorId","sensorType","findIndex","timestamp","size","points","value","localStorage","getItem","key","darkMode","updatedValue","setItem","dispatchEvent","Event","grid","SetupStore","currentStep","setupStarted","activeGatewayId","steps","completed","val","index","getCurrentStep","id","direction","setStepComplete","Error","stepIndex","every","SiteStore","siteKey","undefined","activeSiteKey","updateUrl","sites","fetchSiteFromLocation","getSite","storeContext","createContext","appStore","authStore","firstTimeSetupStore","siteStore","analyticsStore","useStore","useContext","SidebarMenu","showLoginLogout","showAdmin","menuVisible","setMenuRightVisible","breadCrumb","event","setBreadcrumb","target","innerText","Sidebar","animation","width","visible","vertical","inverted","color","style","top","active","getBreadcrumb","getSiteKey","Divider","version","SiteDetailsFetcher","siteId","auth","a","token","url","response","fetch","headers","Authorization","then","res","ok","json","error","statusText","reject","data","GetAnalyticViews","SaveAnalyticView","method","body","DeleteAnalyticView","AuthFetcher","props","options","Accept","raw","status","get","indexOf","blob","SlAlarmStatusesHandler","fetched","SiteHandler","TILT_SENSOR_TYPE","SALINITY_SENSOR_TYPE","OXYGEN_SENSOR_TYPE","TURBIDITY_SENSOR_TYPE","SENSOR_NODE_TYPE","SENSOR_LOCATION_NODE_TYPE","LICE_SKIRT","SINKER_TUBE","TEMPERATURE_MEASUREMENT_TYPE","TILT_MEASUREMENT_TYPE","DEPTH_MEASUREMENT_TYPE","TURBIDITY_MEASUREMENT_TYPE","SALINITY_MEASUREMENT_TYPE","OXYGEN_MEASUREMENT_TYPE","findHighestAlarmStatus","slAlarmStatus","Array","isArray","alarmStauses","flatMap","slStatus","alarm_status","map","severity","level","reduce","prev","current","getSensorImagePath","type","includes","React","Notyf","duration","position","x","y","findCodeColorFromStatus","findStatusCodeFromStatus","SiteOption","site","notyf","NotyfContext","useSWR","getTokenFunction","slAlarmStatuses","topside_id","siteStatus","siteStatusError","Loader","highestAlarmValue","Header","Content","Subheader","topside_status","cloud","SiteSelect","observer","history","useHistory","siteOptions","getSites","text","content","Dropdown","placeholder","fluid","textAlign","marginTop","children","onChange","find","setSiteKey","trigger","createMedia","breakpoints","sm","md","MediaContextProvider","Media","BreadCrumb","textAlignLast","TopMenu","toggleMenu","displayIcon","setBreadCrumb","useLocation","displaySiteSelect","pathname","startsWith","Sticky","secondary","attached","height","fontSize","greaterThanOrEqual","Popup","href","rel","Image","src","logo","component","errorHandler","ErrorBoundary","Message","icon","whiteSpace","toString","Fragment","state","info","Component","FactoryResetButton","useState","isActive","setIsActive","isSuccess","setIsSuccess","isSubmitFail","setIsSubmitFail","isTimeSeries","setIsTimeSeries","isRelations","setIsRelations","params","URLSearchParams","timeseries","relations","result","setTimeout","Button","title","onOpen","Form","Field","Checkbox","toggle","label","disabled","reload","on","useLedBlink","r","catch","BlinkLED","LEDButton","releases","changes","knownissues","ReleaseItemList","items","d","ReleaseNote","expanded","setExpanded","Segment","ReleaseNotes","i","IconWithTitle","colorWarn","VersionOK","VersionNeedsUpdate","positive","VersionLoadError","VersionStatusIconView","updateAvailable","latestRelease","loading","latestReleaseURL","VersionDetail","chipid","versionShort","updateURL","config","useMemo","rData","isValidating","List","relaxed","Description","Label","is_latest","latest_release","paddingTop","labelPosition","LoadingMessage","ErrorMessage","VersionView","aboutData","proto","protocol","host","split","version_short","CurrentIP","ipData","ip","HardwareSection","About","showKnowledge","InputWithDisable","setValue","reset","setReset","enabled","setEnabled","Input","EditOrganization","oldOrganization","newOrgId","newName","canEdit","enableEdit","editOrganization","organization","org_id","success","mutate","RemoveOrganization","nodeKey","useSWRConfig","open","setOpen","removeOrganization","eventsEnabled","onClose","AddOrganization","setName","orgId","setOrgId","addOrganization","trim","Table","Row","Cell","OrganizationEntry","setNewOrgId","setNewName","default","Organizations","users","sort","b","Dimmer","Dimmable","celled","HeaderCell","Body","Sites","organizations","oas","SitesView","orgAndSites","deleteNode","tokenFunction","_","capitalize","negative","Admin","formatSensorName","sensorItem","measurementColor","measurement","getSensorName","sensor_name","maxLenght","padSensorId","substring","String","padStart","getSensorSegmentType","formattedType","charAt","toUpperCase","slice","replaceAll","getSensorDepth","max_depth","min_depth","getSensorSegment","left_border","right_border","segmentNr","getUnit","AppSettings","graphUpdateInterval","MessageBox","heading","message","iconColor","formatToDate","input","ts","toLocaleString","formatYAxis","Math","round","SingleGraph","getViewData","getDarkMode","setDarkMode","getGraphGrid","graphGrid","setGraphGrid","startDate","endDate","refreshInterval","graphData","graphDataError","useEffect","addEventListener","alt","fitted","toggleSensor","ResponsiveContainer","minHeight","minWidth","debounce","LineChart","margin","right","left","bottom","CartesianGrid","stroke","strokeDasharray","Line","dataKey","xAxisId","dot","activeDot","strokeWidth","unit","isAnimationActive","XAxis","tickFormatter","angle","dy","dx","domain","interval","YAxis","Brush","travellerWidth","Tooltip","labelFormatter","formatter","toFixed","contentStyle","backgroundColor","fontWeight","GroupedByTypeGraph","numberOfDataPoints","useSWRInfinite","revalidateAll","setSize","setDateFrom","setDateTo","timelineData","sensorsWithoutData","filter","join","sensorReadout","sensorReadoutIndex","connectNulls","CsvDownload","from","inProgress","setInProgess","handleClientsDownload","dir","Accepts","URL","createObjectURL","link","document","createElement","setAttribute","appendChild","click","floated","inline","minDate","maxDate","GraphOptions","setStartDate","setEndDate","focusedInput","setFocusedInput","todayDateNow","now","todayDateStart","todayDateEnd","handleDatesChange","Grid","verticalAlign","Column","computer","mobile","Group","toggleDisplayGroupedGraph","setDataPoints","setGraphSize","firstDayOfWeek","add","hideKeyboardShortcutsPanel","startDateId","endDateId","onDatesChange","onFocusChange","displayFormat","minimumNights","isOutsideRange","date","isBefore","isAfter","renderCalendarInfo","localStorageViewIndexKey","ViewManager","views","setAllViews","setActiveViewIndex","activeViewIndex","showSaveDialogue","setShowSaveDialogue","saved","setSaved","setLoading","setError","currentView","viewIndex","existingViewIndex","view","Select","v","setViewDataName","finally","confirm","computedGraphSize","toLowerCase","SensorLocationItems","locationIndex","cageName","measurements","measurementIndex","meta","siteData","activeIndex","setActiveIndex","unassignedSensorsIndex","cages","toggleCategory","assignedSensors","cage","sensor_locations","f","unassignedSensors","unassigned_sensors","setSelectedSensors","Accordion","cageIndex","Title","numberOfSensors","sensorCount","Number","parseInt","Analytics2","setSiteData","allViews","sensorListVisible","setSensorListVisible","setViewData","sensorsGroupedByMeasurementType","simple","toggleDarkMode","toggleGraphGrid","Object","keys","hexColors","green","teal","yellow","red","pink","orange","sunglow","xanadu","gold","cgBlue","maximumBlue","middleBlue","darkBlue","menuBlue","glue","grey","getColor","hex","getColorForSeverity","Cage4DepthMaterial","uniforms","depth1","depth2","depth3","depth4","maxDepth","transitionHeight","hovered","depth1Severity","depth2Severity","depth3Severity","depth4Severity","transparent","vertexShader","fragmentShader","THREE","extend","BottomRingSetup","group","useRef","nodes","useGLTF","ref","dispose","scale","geometry","Torus","material","emissiveIntensity","ShieldingSkirtSetup","Torus001","preload","Cage","cageData","netTexture","useLoader","wrapS","wrapT","repeat","set","rgba","okColor","warningColor","criticalColor","inactiveColor","setDepth1Severity","setDepth2Severity","setDepth3Severity","setDepth4Severity","ringSeverity","setRingSeverity","skirtSeverity","setSkirtSeverity","sensorLoc","ringColor","skirtColor","receiveShadow","castShadow","rotation","PI","Walkway","Nett","opacity","alphaMap","OceanMaterial","oceanColor","waveNormals","Water","OceanPlane","waterNormals","useFrame","delta","normalMap","offset","renderOrder","attach","args","reflectivity","clearcoat","side","depthWrite","formatTickYAxis","seconds","getYaxisDomainFromTimeline","timeline","relevantTimelines","tl","findYaxisDomainFromTimeline","padDomain","min","max","padding","mT","Infinity","values","tlMin","tlMax","makeYaxies","groupedTimelines","Map","has","yaxisProps","timelines","t","ticks","padMin","padMax","step","calculateTicks","showLabels","yAxisId","allowDecimals","tick","reversed","fill","TimelineGraph","hideXaxis","syncMethod","sensorName","Legend","align","layout","allowDataOverflow","allowDuplicatedCategory","SensorIcon","marginLeft","setVisible","zIndex","cursor","transform","sensorImg","maxWidth","rx","MakeSlCageGraphGrid","slH","slDepth","sensor_location","sensorSegment","measurement_history","groupedSensors","measurementHistory","sh","GroupSensorsFromMeasurementHistory","slMeasurementGraphs","sensor_key","sampleSize","hours","sensorDisplayName","paddingBottom","basic","samples","MakeSlMeasurementGraph","orderSensorLocationHistory","CageGraphGrid","cageId","setHours","cmh","slHistory","sensor_location_history","mapped","slHist","background","borderRadius","floating","labeled","button","Measurements","colSpan","MeasurementGraph","referenceLinePercentage","paddingLeft","CageAlarm","alarm","setShadows","marginRight","allowOverlap","renderTrack","warning","critical","display","marginBottom","renderThumb","show","prevTriggerDistance","triggerDistance","TriggerDistanceIcon","MainThumbIcon","diff","textAnchor","AlarmMeasurementDisplay","horizontal","pair","compact","paddingRight","CageOverviewAlarms","alarms","setAlarms","sensorLocation","scenario_status","scenarioStatus","scenarios","warningTrigger","warning_trigger_distance","min_trigger_distance","max_trigger_distance","prev_trigger_distance","trigger_distance","depth","locationId","description","flat","alarmContainer","getElementById","scrollHeight","offsetHeight","scrollTop","opasity","boxShadow","onScroll","timeZones","CageOverview","match","setCages","setCage","cageID","setCageId","currentTimeView","setCurrentTimeView","currentTimeValue","setCurrentTimeValue","siteID","setUrl","newCage","HandleRouteChange","sensorID","time","panes","menuItem","render","Tab","Pane","handleRouteChange","defaultActive","pane","menu","pointing","onTabChange","CageDisplay","historyOptions","selectedHistoryOption","setSelectedHistoryOption","setNow","currentDate","setCurrentDate","dates","setDates","setTime","intervalRef1","timerRef1","setInterval","clearTimeout","getHours","newCurrentTime","getTime","newCurrentDate","isPlaying","setIsPlaying","myInterval","setMyInterval","count","setCount","play","clearInterval","newInterval","columns","toLocaleTimeString","timeZone","transition","borderTopLeftRadius","borderTopRightRadius","option","onFinalChange","float","clear","getTrackBackground","colors","substr","dateStyle","timeStyle","hour12","CageGraphGridNew","CageCanvas","virtualCamera","shadows","camera","OrbitControls","enablePan","enableZoom","enableRotate","intensity","Sky","sunPosition","distance","shadow-mapSize-height","shadow-mapSize-width","fallback","Cage2DepthSegmentsMaterial","segmentStatus","leftBorder","rightBorder","segLength","transitionLength","statuses","segments","leftBorders","rightBorders","element","segment","depthPos","standardWalkwayColor","meterEquivalent","setHoveredCageKey","showColor","circumference","walkWayColor","setWalkwayColor","newPosition","slGroups","sl","added","slGroup","sensorLocations","addOrCreate","cageScale","shieldingSkirt","slc","sinkerTube","onPointerEnter","stopPropagation","onPointerLeave","Html","center","pointerEvents","cagePosition","FeedBarge","fb","materials","Vector3","Mesh","green6028","Mesh_1","Mesh_2","paint_white","Mesh_3","Rubber","Mesh_4","BaseMtl","Mesh_5","shell","Mesh_6","Mesh_7","Mesh_8","Mesh_9","paint_white2","Mesh_10","Mesh002","Mesh002_1","HeightPlane","normals","displacementMap","findSensorKeyFromAlarm","measurementPairs","sensorMeasurements","findMeasurementsForSensor","m","AlarmDisplayElement","classNames","dismissed","num","Transition","Card","scenario_name","hour","minute","sensor_keys","setDismissed","AlarmDisplay","alarmStack","setAlarmStack","dismissAllButton","setDismissAllButton","scenarioName","tempalarmStack","sLoc","newAlarm","showDismissAll","overflowY","overflowX","onMouseOver","onMouseLeave","CompassRose","xmlns","xmlnsXlink","viewBox","xmlSpace","fillRule","clipRule","fontFamily","SiteView","setPicked","nodeClicked","showAlarms","showColors","cameraPosition","setRotation","sph","Spherical","Rotation","getWorldDirection","setFromVector3","rotate","MathUtils","radToDeg","theta","near","far","resize","polyfill","ResizeObserver","rotateSpeed","enableDamping","dampingFactor","minPolarAngle","maxPolarAngle","maxDistance","maxZoom","minZoom","rayleigh","cageClicked","cageHover","feeding_barge","altKey","CageSetup","hoveredCageKey","onPointerMissed","RightMenu","SegmentPicker","activeSegment","setActiveSegment","AlarmListStore","createAlarm","editAlarm","connectAlarm","disconnectAlarm","alarmListContext","alarmListStore","useAlarmListStore","makeTitleForConnectingSensor","ConnectAlarmDialogue","selectedLocation","setSelectedLocation","locationOptions","upperFirst","replace","o","assign","alarmKey","locationKey","showConnectAlarm","err","Modal","dimmer","stackable","Actions","triggerTypeOpts","measurementsOpts","invalidLimits","mType","tType","warn","crit","invalidDevianceLimits","baseline","OnePointDevianceAlarm","setTrigger","defaultTrigger","setMType","setBaseline","setCrit","setWarn","trigger_type","trigger_action","warning_point","critical_point","baseline_point","OneDimensionAlarm","aType","setAType","stretched","AlarmForm","setAlarm","defaultAlarm","setType","Radio","validAlarm","validTrigger","CreateAlarmDialogue","addAlarm","showCreateAlarm","makeContentForDisconnectingSensor","placement","DisconnectAlarmDialogue","showDisconnectAlarm","unassign","EditAlarmDialogue","setNewAlarm","save","showEditAlarm","Sensor","TriggerDisplay","action","Alarm","setPickedAlarm","sensorTypes","Set","findSensorTypesFromMeasurements","mPair","item","AlarmList","pickedAlarm","assingedAlarms","segmentA","segmentB","structured","sla","s","sli","last_message","ConnectSensorDialogue","setDisplay","sensorkey","sensorTypeOption","makeName","serialNumber","validSensorId","validSensor","AddNewSensorDialogue","displayAddSensor","setDisplayAddSensor","setSensorId","setSensorType","addNewSensor","newSensor","context","DisconnectSensorDialogue","EditSensorDialogue","changeName","onSubmit","defaultValue","SensorList","cageKey","column","showConnectSensor","setShowConnectSensor","showEditSensor","setShowEditSensor","showDisconnectSensor","setShowDisconnectSensor","pickedSensor","setPickedSensor","displayUnassigned","setDisplayUnassigned","allSensors","typedAllSensors","cageSlKeys","cageSensors","selectable","sortable","sorted","collapsing","rotated","SensorStatus","battery","timeSince","fromNow","hoursSinceLastMessage","asHours","wide","header","TableBody","TableRow","TableCell","bit_error_rate","format","getCageName","setRightMenuVisible","RightMenuDashboard","c","circular","tabular","Dashboard","setCageKey","rightMenuVisible","rightMenuContent","setRightMenuContent","siteError","siteAlarmStatuses","alarmError","relatedAlarms","sl_key","ss","prevValue","currentValue","receiver_colors","legendKeys","AxisConstructor","axisCreator","axis","select","GraphGridConstructor","graphCreator","tickSize","tickFormat","GridLayoutPopup","graphDisplay","setGraphAxisType","customYMn","customYMx","setCustomYMin","setCustomYMax","onRadioEvent","dataString","onYMnValueChange","onYMxValueChange","Legends","legendsTransform","mod","legendTitleFont","legendTextFont","ltx","lty","circleR","circleX","circleY","textX","textY","yDelta","textDecorationLine","cx","cy","GraphInner","graph","customYAxisMax","customYAxisMin","outerWidth","outerHeight","gWidth","gHeight","legendsMarginTop","legendsMarginRight","canvasRef","yMin","yMax","x_min","px","x_max","_yMx","_yMn","y_extents","extent","py","y_min","y_max","shift","xScale","scaleLinear","range","nice","yScale","canvas","getContext","nWidth","clientWidth","nHeight","clientHeight","ctx","clearRect","idx","beginPath","strokeStyle","lineWidth","lineTo","drawPoint","xAxis","axisBottom","yAxis","axisLeft","xAxisTop","axisTop","xTransform","yTransform","xGrid","yGrid","killInf","NaN","downsample","payload","x_scale","y_scale","x_offset","y_offset","dataPrPixel","s0","s1","s2","s3","bucketSize","bucket","ceil","arguments","BucketSampler","buckets","CorrelatorGraphManual","defYMax","defYMin","lGraph","setLgraph","setIntervalId","setGraphDisplay","setYAxisMin","setYAxisMax","handleClick","ddata","ButtonGroup","hidden","lg","xl","Graph","at","DiagnosticReport","setDescription","setDuration","SelectDuration","onSelectDuration","TextArea","onInput","rows","flowing","MessageList","latest","latestError","dataList","definition","reverse","report","DetailsRow","pitch","postfix","pressure","oxygen","temperature","salinity","conductivity","resistance","turbidity","receivers","multipaths","nsd","rssi","minNsd","maxrssi","receiver","packet_counter","Diagnostic","spectrumUrl","spectrumUrlDefined","makeSinkerTube","random","makeLevel","makeShieldingSkirt","EditCage","setX","setY","circ","setCirc","submitChanges","hasShieldingSkirt","hasSinkerTube","curr","sinkerTubeSl","addSinkerTube","stIndex","removeSinkerTube","addShieldingSkirt","removeShieldingSkirt","EditSensorLocation","SideBarMenu","pickedNode","setSite","feedingBarge","setFeedingBarge","showSaveSiteDialog","siteName","setSiteName","EditFeedingBarge","rot","setRot","longitude","long","setLong","latitude","lat","setLat","changeFeedingBarge","AddCage","amount","setAmount","amountMade","setMade","setMaxDepth","noDepths","setNoDepths","showCageAccessories","setCageAccessories","noSegments","setNoSegments","shouldAddSinkerTube","shouldAddShieldingSkirt","isNoDepthsValid","inputsValid","newCages","makeCage","depths","floor","makeSLs","row","maxSegments","sls","segmentDepth","createMetaFromType","makeSL","maxSegements","borders","getSegmentBorder","segmentSize","EditSite","picked","showSaveSite","setShowSaveSite","savedSite","prevCages","foundChanges","pc","nc","hasChangedCage","prevFB","newFB","newSite","saveSite","foundCage","ImageUpload","imageFile","setFile","displayImage","setDisplayImage","fileUpload","file","logoNum","formData","FormData","append","Headers","onDeleteImage","setLogoNum","preventDefault","alert","files","clearable","primary","onError","currentTarget","DefaultIcon","L","iconUrl","shadowUrl","iconShadow","iconSize","iconAnchor","Marker","prototype","findColorFromStatus","SiteMarker","GoToSite","siteAlarms","alarmerror","CircleMarker","radius","pathOptions","fillColor","fillOpacity","eventHandlers","OverviewTab","siteKeys","showNewSite","setShowNewSite","centered","OverviewTabElement","NewSiteTabElement","hideNewSite","topsideId","setTopsideId","getActiveGatewayId","addSite","lng","Coordinates","setPosition","useMapEvents","latlng","LeafletOverviewMap","SetCurrentSite","disableGotoSite","MapContainer","zoom","scrollWheelZoom","TileLayer","attribution","noWrap","OverViewMap","PrivacyPolicy","SensorConfigStore","startScan","scanning","devices","connectedMac","configMac","device","sensorConfigContext","sensorConfigStore","useSensorConfigStore","ChargingIcon","fullyCharged","CurrentSensorConfig","mac","setConfigMac","getConfigMac","sensorConfig","SensorConfigForm","apply","setApply","setShow","chosenSensorSetting","chooseSensorSetting","sensorSettings","sensorConfigOpts","sensor_config","applyConfig","resp","PlaySoundButton","playSoundWait","setPlaySoundWait","playSound","setConnectedMac","SensorDisplay","raised","padded","inStorageColor","in_storage","getConnectedMac","serial_number","is_fully_charged","SensorConfigSegment","fromMStoSec","ms","SensorConfigView","device_config","measurement_period","transmit_block","transmit_period","Scanner","shouldScan","setScanning","is_scanning","addDevices","toggleStartScan","Sensors","getDevices","SetNTP","ntp_server","SetManual","refreshNTP","CurrentNTPServer","timeData","ntp_enabled","ntp_synchronized","NTPSet","isSubmitting","setIsSubmitting","isSubmitSuccess","setIsSubmitSuccess","submitError","setSubmitError","ntpServer","setNtpServer","ManualSet","currentTime","setCurrentTime","secTimer","toISOString","NTPConfig","ntpEnabled","setNTPEnabled","FetchNTP","tData","Splash","getUser","firstName","given_name","setSetupStarted","StepIndicators","stepCircles","getSteps","StepContent","allSteps","Checklist","UserGatewaysSelect","gateways","gatewayName","results","radioOptions","setActiveGatewayId","siteConnectedToGateway","selectGateway","divided","SetupInternet","gatewayStatus","internetConnection","cloudConnection","gatewayData","gatewayError","userInfo","checksOk","userGateways","time_sync","setStepIncomplete","SiteSetup","revalidateIfStale","revalidateOnReconnect","ReceiverStatuses","GridColumn","pos","is_connected","SetupReceivers","receiverStatuses","numberOfReceivers","gatewayInfo","receiver_statuses","Placeholders","numberOfColumns","numberOfCards","k","Placeholder","image","Paragraph","SensorScan","isScanning","setShowHelp","showHelp","ManageSensorForm","setSensorName","setSelectedDevice","selectedDevice","saveSensor","saving","editMode","widths","required","onBlur","control","selectedValue","SensorHelpMessage","onDismiss","DeviceMeta","serial","charged","deviceName","Meta","DeviceList","dataFromDatabase","source","filteredDevices","selectDevice","list","extra","itemsPerRow","SensorOptionValues","output","SensorSetup","setSaving","newSensorAdded","deviceSearch","deviceSearchError","existingDevices","devicesAdded","Footer","notify","versionInfo","appInfo","completeSetup","setUser","SetupSite","finished","Steps","stepItems","stepFinished","Step","Welcome","currentStepStatus","getCurrentStepStatus","getSetupStarted","nextButton","previousButton","allStepsCompleted","navigate","Help","titleProps","helpContents","ingress","category","categoryIndex","styled","itemIndex","AppMain","isAdmin","segmentRef","Pushable","Pusher","Ref","innerRef","path","exact","Time","Container","devMode","toLocaleLowerCase","menuRightVisible","isAtWelcomeScreen","firstTimeSetup","setSites","errorMessage","setUpdateUrl","pathParts","App","LoginButton","loginWithRedirect","AuthApp","isLoading","isAuthenticated","getIdTokenClaims","setIsAdmin","IdTokenClaims","setTokenFunction","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","enableLogin","process","GOOGLE_ANALYTICS_ID","ReactGA","initialize","gaOptions","siteSpeedSampleRate","pageview","search","ReactDOM","clientId","redirectUri","audience","scope","StrictMode"],"mappings":"yrFAgUYA,E,uICtSGC,EAtBM,WAAO,IAClBC,EAAWC,cAAXD,OAUR,OACE,eAACE,EAAA,EAAKC,KAAN,CAAWC,GAAIC,IAAMC,GAAG,IAAIC,QATd,WACd,IACEP,EAAO,CAAEQ,SAAUC,OAAOC,SAASC,SACnC,MAAOC,GACPC,QAAQC,IAAI,UAAWF,KAKzB,oBAEE,cAACG,EAAA,EAAD,CACEC,KAAK,UACLC,UAAU,a,uCCPLC,EAAb,WAYE,aAAe,yBAXPC,WAAqB,GAWf,KAVNC,KAAsB,CAC5BC,MAAO,KACPC,MAAO,CACLC,SAAU,GACVC,UAAW,GACXC,cAAe,GACfC,0BAA2B,OAK7BC,YAAmBC,MAbvB,iDAgBE,SAAcT,GACRS,KAAKT,aAAeA,IACtBS,KAAKT,WAAaA,KAlBxB,2BAsBE,WACE,OAAOS,KAAKT,aAvBhB,qBAiCE,SAAQG,EAAmCD,GACrCC,IACFM,KAAKR,KAAKE,MAAQA,GAEhBD,IACFO,KAAKR,KAAKC,MAAQA,KAtCxB,qBA8CE,WACE,OAAOO,KAAKR,SA/ChB,KAmDaS,EAAb,WAIE,aAAe,yBAHPC,4BAGM,OAFNV,UAEM,EACZO,YAAmBC,MACnBA,KAAKE,uBAAyB,kBAC5BC,QAAQC,QAAQ,gBAPtB,oDAUE,SAAiBF,GACfF,KAAKE,uBAAyBA,IAXlC,8BAcE,WACE,OAAOF,KAAKE,2BAfhB,KAmBaG,EAAb,WAgBE,aAAe,IAAD,gCAdNC,SAAiC,CACvCX,SAAU,KACVP,KAAM,eACNmB,eAAgB,CACdC,MAAM,EACNC,gBAAgB,EAChBC,YAAa,IACbC,UAAWC,IAAO,IAAIC,MAAQC,QAAQ,OAAOC,UAAS,IAAIF,MAAOG,oBAAqB,UAAUC,OAChGC,QAASN,IAAO,IAAIC,MAAQM,MAAM,OAAOJ,UAAS,IAAIF,MAAOG,oBAAqB,UAAUC,OAC5FG,WAAY,UAEdC,QAAS,IAGG,KAkBdC,mCAAqC,WAAO,IAAD,IAEL,EADhCC,EAAe,IACnB,UAAI,EAAKjB,gBAAT,iBAAI,EAAee,eAAnB,aAAI,EAAwBG,UAC1B,YAAKlB,gBAAL,SAAee,QAAQI,SAAQ,SAACzC,GAAY,IAAD,EAEzC,iBAAIuC,EAAQvC,EAAE0C,yBAAd,aAAI,EAA6BF,QACxBD,EAAQvC,EAAE0C,kBAAkBC,KAAK3C,GAGjCuC,EAAQvC,EAAE0C,kBAAoB,CAAC1C,OAI5C,OAAOuC,GA9BPxB,YAAmBC,MAjBvB,+CAoBE,SAAY4B,GACV5B,KAAKM,SAAWsB,IArBpB,yBAwBE,WACE,OAAO5B,KAAKM,WAzBhB,6BAkDE,SAAgBlB,GAAe,IAAD,OAC5ByC,aAAY,WACV,EAAKvB,SAASlB,KAAO0C,KAAKC,MAAMD,KAAKE,UAAU5C,SApDrD,0BAwDE,SAAa6C,EAAaC,EAAyBC,EAA8BC,EAA0BC,GAAwB,IAAD,OAChIR,aAAY,WAEV,IAAMS,EAAc,EAAKC,+BAA+BN,EAAOO,UAAWP,EAAOQ,YAAaP,GAC9F,IAAgB,IAAZC,GACF,GAAIG,EAAc,EAAG,CACnB,IAAMI,EAAkB,CACtB/C,SAAUsC,EAAOtC,SACjB8C,YAAaR,EAAOQ,YACpBD,UAAWP,EAAOO,UAClBd,iBAAkBQ,EAClB9C,KAAM6C,EAAO7C,KACbuD,qBAAsBP,GAAsB,GAC5CQ,UAAWP,GAAgB,OAE7B,EAAK/B,SAASe,QAAQM,KAAKe,SAGzBJ,GAAe,GAEjB,EAAKhC,SAASe,QAAQwB,OAAOP,EAAa,QA5EpD,4CAkFE,SAA+BQ,EAAkBC,EAAoBb,GAA0B,IAAD,IAE5F,iBAAOlC,KAAKM,gBAAZ,iBAAO,EAAee,eAAtB,aAAO,EAAwB2B,WAAU,SAAChE,GAAD,OAAYA,EAAEwD,YAAcM,GAAY9D,EAAEyD,cAAgBM,GAAc/D,EAAE0C,mBAAqBQ,OApF5I,8BAuFE,SAAiBY,GAAmB,IAAD,IAEjC,iBAAO9C,KAAKM,gBAAZ,iBAAO,EAAee,eAAtB,aAAO,EAAwB2B,WAAU,SAAChE,GAAD,OAAYA,EAAEwD,YAAcM,OAzFzE,yBA4FE,SAAYG,GACVjD,KAAKM,SAASC,eAAeI,UAAYsC,IA7F7C,uBAgGE,SAAUA,GACRjD,KAAKM,SAASC,eAAeW,QAAU+B,IAjG3C,0BAoGE,SAAaC,GACXlD,KAAKM,SAASC,eAAea,WAAa8B,IArG9C,2BAwGE,SAAcC,GAAiB,IAAD,OAC5BtB,aAAY,WACV,EAAKvB,SAASC,eAAeG,YAAcyC,OA1GjD,4BA8GE,WACEnD,KAAKM,SAASC,eAAeC,MAAQR,KAAKM,SAASC,eAAeC,OA/GtE,gCAkHE,SAAmBa,GAAsC,IAAD,OACtDQ,aAAY,WACV,EAAKvB,SAASe,QAAUA,OApH9B,gCAwHE,WACE,OAAOrB,KAAKM,SAASe,UAzHzB,yBA4HE,SAAYb,GACVR,KAAKM,SAASC,eAAeC,KAAOA,IA7HxC,yBAgIE,WACE,OAAOR,KAAKM,SAASC,eAAeC,OAjIxC,uCAoIE,WACER,KAAKM,SAASC,eAAeE,gBAAkBT,KAAKM,SAASC,eAAeE,iBArIhF,yBAyIE,WACE,IAAI2C,EAAQC,aAAaC,QAAQ,sBACjC,OAAc,OAAVF,GACKtB,KAAKC,MAAMqB,KA5IxB,4BAkJE,WACE,IAAMG,EAAM,qBACRC,EAAWH,aAAaC,QAAQC,GAChCE,GAAe,EAEF,OAAbD,IAEFC,IADAD,EAAW1B,KAAKC,MAAMyB,KAGxBH,aAAaK,QAAQH,EAAKzB,KAAKE,UAAUyB,IAEzC5E,OAAO8E,cAAc,IAAIC,MAAM,cA7JnC,0BAgKE,WACE,IAAIR,EAAQC,aAAaC,QAAQ,wBACjC,OAAc,OAAVF,GACKtB,KAAKC,MAAMqB,KAnKxB,6BAyKE,WACE,IAAMG,EAAM,uBACRM,EAAOR,aAAaC,QAAQC,GAC5BE,GAAe,EAEN,OAATI,IAEFJ,IADAI,EAAO/B,KAAKC,MAAM8B,KAGpBR,aAAaK,QAAQH,EAAKzB,KAAKE,UAAUyB,IAEzC5E,OAAO8E,cAAc,IAAIC,MAAM,gBApLnC,KAwLaE,EAAb,WAaE,aAAe,yBAZPC,YAAc,EAYR,KAXNC,cAAe,EAWT,KAVNC,gBAAiC,KAU3B,KATNC,MAAQ,CACd,CAAEC,WAAW,GACb,CAAEA,WAAW,GACb,CAAEA,WAAW,GACb,CAAEA,WAAW,GACb,CAAEA,WAAW,GACb,CAAEA,WAAW,IAIbpE,YAAmBC,MAdvB,mDAiBE,WACE,OAAOA,KAAKgE,eAlBhB,6BAqBE,SAAgBI,GACdpE,KAAKgE,aAAeI,IAtBxB,4BAyBE,WACE,OAAOpE,KAAK+D,cA1BhB,4BA6BE,SAAeM,GACbrE,KAAK+D,YAAcM,IA9BvB,kCAiCE,WACE,OAAOrE,KAAKkE,MAAMlE,KAAKsE,kBAAkBH,YAlC7C,gCAqCE,SAAmBI,GACjBvE,KAAKiE,gBAAkBM,IAtC3B,gCAyCE,WACE,OAAOvE,KAAKiE,kBA1ChB,sBA6CE,SAASO,GACP,OAAQA,GACN,IAAK,OAECxE,KAAK+D,eAAe/D,KAAKkE,QAC3BlE,KAAKyE,gBAAgBzE,KAAK+D,aAC1B/D,KAAK+D,eAEP,MACF,IAAK,UAEG/D,KAAK+D,gBAAiB/D,KAAKkE,QAAUlE,KAAK+D,YAAc,IAE5D/D,KAAK+D,cAEP,MACF,QACE,MAAM,IAAIW,MAAM,mEA9DxB,6BAqEE,SAAgBC,GAEd,KAAIA,KAAa3E,KAAKkE,OAGpB,MAAM,IAAIQ,MAAJ,mBAAsBC,EAAtB,uCAFN3E,KAAKkE,MAAMS,GAAWR,WAAY,IAxExC,+BA8EE,SAAkBQ,GAEhB,KAAIA,KAAa3E,KAAKkE,OAGpB,MAAM,IAAIQ,MAAJ,mBAAsBC,EAAtB,uCAFN3E,KAAKkE,MAAMS,GAAWR,WAAY,IAjFxC,+BA0FE,WACE,OAAOnE,KAAKkE,MAAMU,OAAM,SAAC5F,GAAD,OAAuB,IAAhBA,EAAEmF,eA3FrC,sBAiGE,WACE,OAAOnE,KAAKkE,QAlGhB,qBAyGE,SAAQS,GAEN,GAAIA,KAAa3E,KAAKkE,MACpB,OAAOlE,KAAKkE,MAAMS,GAElB,MAAM,IAAID,MAAJ,mBAAsBC,EAAtB,2CA9GZ,KAmHaE,EAAb,WAWE,aAAe,yBAVPC,aAA8BC,EAUxB,KATNC,mBAAoCD,EAS9B,KARNE,UAAiC,aAQ3B,KAJNC,MAA8B,GAIxB,KAHNC,sBAAsC,WAC5C,MAAO,SAGPpF,YAAmBC,MAZvB,oDAmBE,SAAiB8E,GACf9E,KAAKgF,cAAgBF,IApBzB,8BA2BE,WACE,OAAO9E,KAAKgF,gBA5BhB,0BAmCE,SAAaC,GACXjF,KAAKiF,UAAYA,IApCrB,sCAuCE,SAAyBG,GACvBpF,KAAKmF,sBAAwBC,IAxCjC,wBA+CE,SAAWN,GACT9E,KAAK8E,QAAUA,OACQC,IAAnB/E,KAAKiF,WACPjF,KAAKiF,UAAUjF,KAAK8E,WAlD1B,wBA0DE,WACE,YAAqBC,IAAjB/E,KAAK8E,QACA9E,KAAKmF,wBAEPnF,KAAK8E,UA9DhB,sBAqEE,SAASI,GACPlF,KAAKkF,MAAQA,IAtEjB,sBA6EE,WACE,OAAOlF,KAAKkF,UA9EhB,KAgGMG,EAAeC,wBAAc,CACjCC,SAAU,IAAIjG,EACdkG,UAAW,IAAIvF,EACfwF,oBAAqB,IAAI3B,EACzB4B,UAAW,IAAIb,EACfc,eAAgB,IAAItF,IAKPuF,EAFE,kBAAMC,qBAAWR,I,SCjTnBS,EAtKK,SAAC,GAMI,IALvBC,EAKsB,EALtBA,gBACAC,EAIsB,EAJtBA,UACAC,EAGsB,EAHtBA,YAEAC,GACsB,EAFtBC,WAEsB,EADtBD,qBACsB,EACUN,IAAxBL,EADc,EACdA,SAAUG,EADI,EACJA,UACZ/G,EAAU,SAACyH,GACfF,GAAoB,GACpBX,EAASc,cAAeD,EAAME,OAA4BC,YAE5D,OACE,eAACC,EAAA,EAAD,CACEhI,GAAIF,IACJkG,UAAU,OACViC,UAAU,OACVC,MAAM,OACNC,QAASV,EACTW,UAAQ,EACRC,UAAU,EACVC,MAAM,OACNC,MAAO,CAAEC,IAAK,QAThB,UAYE,eAAC1I,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,iBAA7B1B,EAAS2B,gBACjBxI,GAAI,IACJoI,MAAM,QACNzH,UAAU,OAPZ,yBAUE,cAACF,EAAA,EAAD,CAAMC,KAAK,UATN,gBAWP,eAACd,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,YAA7B1B,EAAS2B,gBACjBxI,GAAI,cAAgBgH,EAAUyB,aAC9BL,MAAM,QACNzH,UAAU,OAPZ,oBAUE,cAACF,EAAA,EAAD,CAAMC,KAAK,YATN,aAWN4G,GACC,eAAC1H,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,cAA7B1B,EAAS2B,gBACjBxI,GAAI,aAAegH,EAAUyB,aAC7BL,MAAM,QACNzH,UAAU,OAPZ,sBAUE,cAACF,EAAA,EAAD,CAAMC,KAAK,aATN,aAYT,eAACd,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,cAA7B1B,EAAS2B,gBACjBxI,GAAI,cAAgBgH,EAAUyB,aAC9B9H,UAAU,OANZ,sBASE,cAACF,EAAA,EAAD,CAAMC,KAAK,eARN,aAUP,cAACgI,EAAA,EAAD,IACCpB,GACC,eAAC1H,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,UAA7B1B,EAAS2B,gBACjBxI,GAAG,SACHW,UAAU,OANZ,kBASE,cAACF,EAAA,EAAD,CAAMC,KAAK,kBARN,UAYuC,EAY/C4G,GACC,eAAC1H,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,gBAA7B1B,EAAS2B,gBACjBxI,GAAI,eAAiBgH,EAAUyB,aAC/B9H,UAAU,OANZ,wBASE,cAACF,EAAA,EAAD,CAAMC,KAAK,UARN,eAWT,eAACd,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,qBAA7B1B,EAAS2B,gBACjBxI,GAAI,WACJW,UAAU,OANZ,6BASE,cAACF,EAAA,EAAD,CAAMC,KAAK,gBARN,WAUP,eAACd,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,SAA7B1B,EAAS2B,gBACjBxI,GAAI,QACJW,UAAU,OANZ,iBASE,cAACF,EAAA,EAAD,CAAMC,KAAK,sBARN,QAUP,eAACd,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,UAA7B1B,EAAS2B,gBACjBxI,GAAI,UAAYgH,EAAUyB,aAC1B9H,UAAU,OANZ,kBASE,cAACF,EAAA,EAAD,CAAMC,KAAK,kBARN,SAUP,eAACd,EAAA,EAAKC,KAAN,CAEEC,GAAIC,IACJE,QAASA,EACTsI,OAAqC,mBAA7B1B,EAAS2B,gBACjBxI,GAAI,WACJW,UAAU,OANZ,2BASE,cAACF,EAAA,EAAD,CAAMC,KAAK,gBARN,kBAUN2G,GAAmB,cAAC,EAAD,IACpB,sBAAK1G,UAAU,iEAAf,cACIgI,iB,qDC/KK,MAA0B,6C,mDCiBnCC,EAAkB,uCAAG,WAAOC,EAAgBC,GAAvB,mBAAAC,EAAA,sEACLD,EAAKtH,yBADA,cACnBwH,EADmB,OAEnBC,EAFmB,uBAEGJ,GACtBK,EAAWC,YACfF,EACA,CACEG,QAAS,CACPC,cAAc,UAAD,OAAYL,MAI5BM,MAAK,SAAAC,GACJ,GAAIA,EAAIC,GACN,OAAOD,EAAIE,OAEX,IAAMC,EAAQ,IAAI1D,MAAMuD,EAAII,YAC5B,OAAOlI,QAAQmI,OAAOF,MAGzBJ,MAAK,SAAAO,GAAI,OAAIA,KAnBS,kBAoBlBX,GApBkB,2CAAH,wDA4BlBY,EAAgB,uCAAG,WAAOhB,GAAP,iBAAAC,EAAA,sEACHD,EAAKtH,yBADF,cACjBwH,EADiB,iCAGjBE,EAAWC,YAHM,0BAKrB,CACEC,QAAS,CACPC,cAAc,UAAD,OAAYL,MAI5BM,MAAK,SAAAC,GACJ,GAAIA,EAAIC,GACN,OAAOD,EAAIE,OAEX,IAAMC,EAAQ,IAAI1D,MAAMuD,EAAII,YAC5B,OAAOlI,QAAQmI,OAAOF,MAGzBJ,MAAK,SAAAO,GAAI,OAAIA,KAnBO,kBAoBhBX,GApBgB,2CAAH,sDA4BhBa,EAAgB,uCAAG,WAAOnI,EAAekH,GAAtB,qBAAAC,EAAA,sEACHD,EAAKtH,yBADF,cACjBwH,EADiB,OAEnBgB,EAAS,OACTf,EAHmB,2BAQX,OAARrH,QAAQ,IAARA,OAAA,EAAAA,EAAUX,WAAmC,QAAf,OAARW,QAAQ,IAARA,OAAA,EAAAA,EAAUX,YAClCgI,EAAG,kCAA8BrH,EAASX,UAC1C+I,EAAS,OAELd,EAAWC,YACfF,EACA,CACEe,OAAQA,EACRZ,QAAS,CACPC,cAAc,UAAD,OAAYL,GACzB,eAAgB,oBAElBiB,KAAM7G,KAAKE,UAAU1B,KAGtB0H,MAAK,SAAAC,GACJ,GAAIA,EAAIC,GACN,OAAOD,EAAIE,OAEX,IAAMC,EAAQ,IAAI1D,MAAMuD,EAAII,YAC5B,OAAOlI,QAAQmI,OAAOF,MAGzBJ,MAAK,SAAAO,GAAI,OAAIA,KA/BO,kBAgChBX,GAhCgB,2CAAH,wDAwChBgB,EAAkB,uCAAG,WAAOtI,EAAekH,GAAtB,mBAAAC,EAAA,sEACLD,EAAKtH,yBADA,cACnBwH,EADmB,OAEZ,SACTC,EAHqB,yCAGYrH,QAHZ,IAGYA,OAHZ,EAGYA,EAAUX,UACzCiI,EAAWC,YACfF,EACA,CACEe,OALS,SAMTZ,QAAS,CACPC,cAAc,UAAD,OAAYL,MAI5BM,MAAK,SAAAC,GACJ,GAAIA,EAAIC,GACN,OAAOD,EAAIC,GAEX,IAAME,EAAQ,IAAI1D,MAAMuD,EAAII,YAC5B,OAAOlI,QAAQmI,OAAOF,MAGzBJ,MAAK,SAAAO,GAAI,OAAIA,KArBS,kBAsBlBX,GAtBkB,2CAAH,wDA4DlBiB,EAAW,uCAAG,WAAOlB,EAAazH,EAA+C4I,GAAnE,mBAAArB,EAAA,yDACZsB,EAAe,CACnBL,QAAa,OAALI,QAAK,IAALA,OAAA,EAAAA,EAAOJ,SAAU,MACzBZ,SAAc,OAALgB,QAAK,IAALA,OAAA,EAAAA,EAAOhB,UAAW,CAAEkB,OAAQ,mBAAoB,eAAgB,sBAG3E,OAAIF,QAAJ,IAAIA,OAAJ,EAAIA,EAAOH,OAC+B,qBAApCI,EAAQjB,QAAQ,kBAClBiB,EAAQJ,KAAO7G,KAAKE,UAAU8G,EAAMH,OAInChB,EAZa,yCAaT,MAbS,gCAgBEzH,IAhBF,OAgBZwH,EAhBY,OAiBhBqB,EAAQjB,QAAQC,cAAgB,UAAYL,EAjB5B,wDAmBhBzI,QAAQC,IAAI,8BAnBI,8BAuBK2I,YAAMF,EAAKoB,GAvBhB,WAuBZnB,EAvBY,gBAyBdkB,QAzBc,IAyBdA,OAzBc,EAyBdA,EAAOG,KAzBO,0CA2BTrB,GA3BS,WA8BbA,EAASM,GA9BI,uBA+BhBjJ,QAAQC,IAAR,yBAA8ByI,EAA9B,iCAA0DC,EAASsB,SAC7D,IAAIxE,MAAM,qDAAuDkD,EAASsB,QAhChE,cAkCEtB,EAASE,QAAQqB,IAAI,iBAAmB,IAC5CC,QAAQ,SAAW,GAAKzB,EAAIyB,QAAQ,aAAe,GAnCjD,0CAoCTxB,EAASO,QApCA,iCAsCTP,EAASyB,QAtCA,0DAAH,0DA0CXC,EAAyB,SAAUC,GACvC,cAAOA,QAAP,IAAOA,OAAP,EAAOA,EAASvB,MAAK,SAAC5E,GAEpB,OAD2CA,MAKzCoG,EAAc,SAAUD,GAC5B,cAAOA,QAAP,IAAOA,OAAP,EAAOA,EAASvB,MAAK,SAAC5E,GAEpB,OADmCA,M,QL3N1BqG,GAAmB,OACnBC,GAAuB,WACvBC,GAAqB,SACrBC,GAAwB,YAKxBC,GAAmB,SAEnBC,GAA4B,iBAO5BC,GAAa,aACbC,GAAc,cAGdC,GAA+B,cAC/BC,GAAwB,QACxBC,GAAyB,QACzBC,GAA6B,YAC7BC,GAA4B,WAC5BC,GAA0B,U,SAiS3BpM,K,gBAAAA,E,0BAAAA,E,oBAAAA,E,sBAAAA,E,YAAAA,E,qBAAAA,M,KMjTZ,IAAMqM,GAAyB,SAACC,GAC9B,IAAKA,IAAkBC,MAAMC,QAAQF,GACnC,OAAQ,EAEV,IAAIG,EAAeH,EAAcI,SAAQ,SAACC,GAAD,OAAcA,EAASC,gBAAcC,KAAI,SAAC7B,GAAD,OAAYA,EAAO8B,SAASC,SAC9G,OAA4B,IAAxBN,EAAanJ,QACP,EAEHmJ,EAAaO,QAAO,SAACC,EAAMC,GAAP,OAAoBD,EAAOC,EAAUD,EAAOC,MAuBnEC,GAAqB,SAACC,GAU1B,MATiB,CACfrB,GACAC,GACAC,GACAC,GACAC,GACAC,IAGaiB,SAASD,GAChB,kBAAN,OAAyBA,EAAzB,QAEM,8B,UCxDKE,OAAMlG,cACnB,IAAImG,KAAM,CACRC,SAAU,IACVC,SAAU,CACRC,EAAG,SACHC,EAAG,a,SCgBHC,GAA0B,SAAC5C,GAC/B,OAAQA,GACN,KAAM,EACJ,MAAO,OACT,KAAK,EACH,MAAO,QACT,KAAK,EACH,MAAO,SACT,KAAK,EACH,MAAO,MACT,QACE,MAAO,SAIP6C,GAA2B,SAAC7C,GAChC,OAAQA,GACN,KAAK,EACH,MAAO,KACT,KAAK,EACH,MAAO,iBACT,KAAK,EACH,MAAO,kBACT,QACE,MAAO,KAOP8C,GAAa,SAAC,GAA+B,IAAD,QAA5BC,EAA4B,EAA5BA,KACdC,EAAQrG,qBAAWsG,IACjB3G,EAAcI,IAAdJ,UAFwC,EAGP4G,aACvC,sBAAwBH,EAAKtM,UAC7B,SAACgI,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBACpC,IAHYC,EAHkC,EAGxC/D,KAAuBH,EAHiB,EAGjBA,MAHiB,EAQKgE,aAAO,kBAAD,OACvCH,EAAKM,aACvB,SAAC5E,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBACpC,IAHYG,EARkC,EAQxCjE,KAAyBkE,EARe,EAQtBrE,MAc1B,GARIA,GACF8D,EAAM9D,MAAN,uCAA4CA,IAG1CqE,GACFP,EAAM9D,MAAN,4CAAiDqE,KAG9CH,EACH,OAAO,cAACI,EAAA,EAAD,CAAQzF,QAAM,IAEvB,IAAI0F,EAAoBpC,GAAuB+B,GAE/C,OACE,cAACM,EAAA,EAAD,CAAQpO,GAAG,KAAX,SACE,eAACoO,EAAA,EAAOC,QAAR,WACGZ,EAAK7M,KAAO,KAAO6M,EAAKM,WAAa,IACtC,cAACK,EAAA,EAAOE,UAAR,CAAkBzN,UAAU,aAA5B,SACE,sCAEGmN,EACC,sBAAMnN,UAAU,OAAhB,SACE,cAACF,EAAA,EAAD,CACEC,MAAoD,KAApC,OAAVoN,QAAU,IAAVA,GAAA,UAAAA,EAAYO,sBAAZ,mBAA4BC,aAA5B,eAAmC9D,QAAkB,QAAU,eACrEpC,OAAqD,KAApC,OAAV0F,QAAU,IAAVA,GAAA,UAAAA,EAAYO,sBAAZ,mBAA4BC,aAA5B,eAAmC9D,QAAkB,QAAU,UAI1E,sBAAM7J,UAAU,OAAhB,qBAEF,sBAAM0H,MAAO,CAAED,MAAOgF,GAAwBa,IAA9C,SACGvE,EAAQ,QAAU2D,GAAyBY,gBA+E3CM,GAvEIC,aAAS,WAAO,IAAD,EAC1BC,EAAUC,cADgB,EAEAxH,IAAxBL,EAFwB,EAExBA,SAAUG,EAFc,EAEdA,UACd2H,EAAmC,GACjCnI,EAAQQ,EAAU4H,YAAc,GACjCpI,EAEMA,GAASA,EAAM1D,QAExB0D,EAAMzD,SAAQ,SAACwK,GACboB,EAAY1L,KAAK,CACf4B,IAAK0I,EAAKtM,SACV4N,KAAMtB,EAAK7M,KACXgE,MAAO6I,EAAKtM,SACZ6N,QAAS,cAAC,GAAD,CAAYvB,KAAMA,SAR/BhN,QAAQmJ,MAAM,yBAqBhB,OACE,cAACqF,EAAA,EAAD,CACEC,YAAY,gBACZrO,UAAU,8DACVsO,OAAK,EACLvK,MAAOsC,EAAUyB,aACjBJ,MAAO,CACLL,MAAO,IACPkH,UAAW,SACXC,UAAW,OAEb9E,QAAO,UACFsE,EADE,CAEL,CACE9J,IAAK,qBACLlE,UAAW,UACXyO,SACE,cAACL,EAAA,EAASlP,KAAV,CACEI,QAAS,WACP4G,EAASc,cAAc,gBACvB8G,EAAQxL,KAAK,MAGftC,UAAU,MACVmO,QACE,qCACE,cAACrO,EAAA,EAAD,CAAMC,KAAK,iBADb,mBAHE,mBAYZ2O,SA1CwB,SAAC/O,EAA6CuJ,GACxE,IAAM0D,EAAO/G,EAAQA,EAAM8I,MAAK,SAAC/B,GAAD,OAAUA,EAAKtM,WAAa4I,EAAKnF,cAAS2B,EAEtEkH,GACFvG,EAAUuI,WAAWhC,EAAKtM,WAuC1BuO,QACE,qBAAK7O,UAAU,UAAf,UACG,UAAA6F,EAAM8I,MAAK,SAAC/B,GAAD,OAAUA,EAAKtM,WAAa+F,EAAUyB,uBAAjD,eAAgE/H,OAAQ,qB,GC9J3C+O,sBAAY,CAClDC,YAAa,CACXC,GAAI,EACJC,GAAI,OAHAC,G,GAAAA,qBAAsBC,G,GAAAA,MAWxBC,GAAa,SAAC,GAA+B,IAA7BlB,EAA4B,EAA5BA,KACpB,OACE,mCACGA,GAAiB,cAATA,EACP,qCACE,sBAAMxG,MAAO,CAAEL,MAAO,MAAOgI,cAAe,UAA5C,eACA,cAAC9B,EAAA,EAAD,CAAQpO,GAAG,KAAKsI,MAAM,QAAQC,MAAO,CAAE8G,UAAW,OAAlD,SACGN,OAGH,QA2DKoB,GAtDCzB,aAAS,YAA2E,IAAxE0B,EAAuE,EAAvEA,WAAYC,EAA2D,EAA3DA,YAC9BtJ,GADyF,EAA9CY,WAA8C,EAAlC2I,cAC1ClJ,IAAbL,UACFzG,EAAWiQ,cACXC,GAAqBlQ,EAASmQ,SAASC,WAAW,aAAqC,MAAtBpQ,EAASmQ,SAChF,OACE,cAACE,EAAA,EAAD,UACE,eAAC7Q,EAAA,EAAD,CAAM8Q,WAAS,EAACzB,OAAK,EAAC0B,SAAS,MAAMvI,MAAM,OAAOD,UAAU,EAAME,MAAO,CAAEuI,OAAQ,QAAnF,WACmB,IAAhBT,GACC,cAACvQ,EAAA,EAAKC,KAAN,CAAWI,QAASiQ,EAAY7H,MAAO,CAAE2H,cAAe,UAAxD,SACE,cAACvP,EAAA,EAAD,CAAMC,KAAoC,UAAW8D,KAAK,YAG9D,eAAC5E,EAAA,EAAKC,KAAN,CAAWwI,MAAO,CAAEwI,SAAU,OAAQ1B,UAAW,OAAjD,UACE,cAAC,IAAD,CAAMlP,QAAS,kBAAM4G,EAASc,cAAc,iBAAiB3H,GAAG,IAAhE,8BAGA,cAAC,GAAD,CAAY6O,KAAMhI,EAAS2B,qBAE7B,cAAC5I,EAAA,EAAKC,KAAN,UAGEyQ,GACA,cAAC,GAAD,MAGF,cAAC1Q,EAAA,EAAKA,KAAN,CAAWqN,SAAS,QAApB,SACE,cAAC4C,GAAD,UACE,cAACC,GAAD,CAAOgB,mBAAmB,KAA1B,SACE,cAAClR,EAAA,EAAKC,KAAN,UACE,cAACkR,EAAA,EAAD,CACEvB,QACE,mBACEwB,KAAK,0BACLC,IAAI,aACJrJ,OAAO,SAHT,SAKE,cAACsJ,EAAA,EAAD,CACE1M,KAAK,QACL2M,IAAKC,EACLzQ,UAAU,WAIhBmO,QAAQ,wBACR7B,SAAS,kC,yCC5EzBoE,GACAC,G,UCsBaC,IDvBbF,GCE0B,SAAyBjH,EAAcV,GACjE,OAAIA,EAGA,eAAC8H,GAAA,EAAD,CAASC,MAAI,EAAb,UACE,cAAChR,EAAA,EAAD,CAAMC,KAAK,UACX,eAAC8Q,GAAA,EAAQrD,QAAT,WACE,cAACqD,GAAA,EAAQtD,OAAT,oBACA,iNAIA,yBAAS7F,MAAO,CAAEqJ,WAAY,YAA9B,SAA6ChI,GAASA,EAAMiI,mBAK3D,cAAC,IAAMC,SAAP,UAAiBxH,EAAMgF,YDhBhC,8MACEyC,MAAoB,CAClBnI,WAAOrD,GAFX,uDASE,SAAkBqD,EAAcoI,GAC1BR,IACFA,GAAa5H,EAAOoI,KAX1B,oBAeE,WACE,OAAOT,GAAU/P,KAAK8I,MAAO9I,KAAKuQ,MAAMnI,UAhB5C,uCAKE,SAAgCA,GAC9B,MAAO,CAAEA,aANb,GAAqBoD,IAAMiF,Y,4DEPvBC,GAAqB,WAAO,IAAD,EACCC,oBAAS,GADV,mBACxBC,EADwB,KACdC,EADc,OAEGF,oBAAS,GAFZ,mBAExBG,EAFwB,KAEbC,EAFa,OAGSJ,oBAAS,GAHlB,mBAGxBK,EAHwB,KAGVC,EAHU,OAKSN,oBAAS,GALlB,mBAKxBO,EALwB,KAKVC,EALU,OAMOR,oBAAS,GANhB,mBAMxBS,EANwB,KAMXC,EANW,KAQzB1S,EAAO,uCAAG,gCAAA8I,EAAA,0DACVmJ,EADU,uBAEZ3R,QAAQC,IAAI,yBAFA,iCAKd+R,GAAgB,GAChBJ,GAAY,GAENS,EAAS,IAAIC,gBAAJ,6BACTL,GAAgB,CAAEM,WAAY,MAC9BJ,GAAe,CAAEK,UAAW,OAVpB,SAaO5J,YAAM,8BAAgCyJ,EAAOjB,WAAY,CAC5E3H,OAAQ,SAdI,UAgBQ,OAHhBgJ,EAbQ,QAgBHxI,OAhBG,kCAiBOwI,EAAOnE,OAjBd,QAiBN5E,EAjBM,OAkBZ1J,QAAQC,IAAI,gBAAiBwS,EAAOxI,OAAQP,GAC5CoI,GAAa,GACbE,GAAgB,GAEhBU,YAAW,WACTV,GAAgB,KACf,KAxBS,wBA0BZF,GAAa,GACbE,GAAgB,GA3BJ,QA8BdU,YAAW,WACTd,GAAY,KACX,KAhCW,4CAAH,qDAmCb,OACE,cAACpB,EAAA,EAAD,CACEvB,QACE,cAAC0D,GAAA,EAAD,CACEtG,KAAK,SACLlM,KAAK,MAELyS,MAAM,4BAJR,2BASFC,OAAQ,WACNb,GAAgB,GAChBF,GAAa,IAEfvD,QACE,gCACE,wEACA,0FACA,eAACuE,GAAA,EAAD,WACE,cAACA,GAAA,EAAKC,MAAN,UACE,cAACC,GAAA,EAAD,CACEC,QAAM,EACNC,MAAM,mBACNhQ,QAAS+O,EACTnD,SAAU,WACRoD,GAAiBD,QAIvB,cAACa,GAAA,EAAKC,MAAN,UACE,cAACC,GAAA,EAAD,CACEC,QAAM,EACNC,MAAM,iBACNhQ,QAASiP,EACTrD,SAAU,WACRsD,GAAgBD,QAItB,cAACQ,GAAA,EAAD,CACEQ,UAAWlB,IAAiBE,EAC5BtK,MAAOkK,EAAe,MAAQJ,EAAW,QAAU,OACnDjS,QAASA,EACTS,KAAM,OACNoO,QAAQ,gCAGXsD,GACC,sGAEE,cAACc,GAAA,EAAD,CACEjT,QAAS,WACPE,OAAOC,SAASuT,UAElB7E,QAAQ,iBAMlB8E,GAAG,QACH3G,SAAS,kB,OC9Ff,SAAS4G,GAAYrS,EAA+C4E,GAAkD,IAAD,EACnF6L,oBAAS,GAD0E,mBAC5GC,EAD4G,KAClGC,EADkG,OAE3EF,oBAAS,GAFkE,mBAE5GK,EAF4G,KAE9FC,EAF8F,KAyBnH,MAAO,CAACL,EAAUI,EAtBF,WACVJ,IAGJC,GAAY,GACZI,GAAgB,GAjBH,SAAC/Q,EAA+C4E,GAC/D,OAAO+D,EAAY,qBAAuB/D,EAAS5E,EAAwB,CAAE+I,KAAK,IAC/EjB,MAAK,SAACwK,GAAD,OAAOA,EAAEtK,MACduK,OAAM,SAACzT,GAEN,OADAC,QAAQC,IAAI,UAAWF,EAAEqR,aAClB,KAaTqC,CAASxS,EAAwB4E,GAASkD,MAAK,SAACE,GAC1CA,GACFjJ,QAAQC,IAAI,eACZyS,YAAW,WACTd,GAAY,KACX,OAEH5R,QAAQC,IAAI,YACZ+R,GAAgB,GAChBJ,GAAY,GACZc,YAAW,WACTV,GAAgB,KACf,YAOX,IAAM0B,GAAYzF,aAAS,WAAO,IAAD,EACEtH,IAAzBJ,EADuB,EACvBA,UAAWE,EADY,EACZA,UADY,EAEW6M,GAAY/M,EAAU6G,mBAAoB3G,EAAUyB,cAF/D,mBAExByJ,EAFwB,KAEdI,EAFc,KAEArS,EAFA,KAI/B,OACE,cAACiT,GAAA,EAAD,CACEjT,QAASA,EACTwR,MAAI,EACJrJ,MAAOkK,EAAe,MAAQJ,EAAW,aAAU7L,EAHrD,0BCTW6N,GAxCE,CACf,CACEvL,QAAS,QACTwL,QAAS,CAAC,mCACVC,YAAa,IAEf,CACEzL,QAAS,QACTwL,QAAS,CAAC,mBACVC,YAAa,KCLXC,GAAkB,SAAC,GAAD,IAAGC,EAAH,EAAGA,MAAH,OACtB,6BACGA,EAAMjI,KAAI,SAACkI,GAAD,OACT,6BAAaA,GAAJA,SAKf,SAASC,GAAYpK,GAAa,IAAD,EACC6H,oBAAS,GADV,mBACxBwC,EADwB,KACdC,EADc,KAKvB/L,EAAuCyB,EAAvCzB,QAASwL,EAA8B/J,EAA9B+J,QAASC,EAAqBhK,EAArBgK,YACpB3C,EAAOgD,EAAW,kBAAoB,oBAE5C,OACE,eAACE,GAAA,EAAD,WACE,eAACzG,EAAA,EAAD,CAAQpO,GAAG,KAAKG,QAPG,kBAAMyU,GAAaD,IAOtC,qBACW9L,EADX,IACoB,cAAClI,EAAA,EAAD,CAAMC,KAAM+Q,OAG/BgD,GACC,gCACE,cAACvG,EAAA,EAAD,CAAQpO,GAAG,KAAX,qBACA,cAAC,GAAD,CAAiBwU,MAAOH,IAEvBC,EAAYtR,OAAS,GACpB,gCACE,cAACoL,EAAA,EAAD,CAAQpO,GAAG,KAAX,0BACA,cAAC,GAAD,CAAiBwU,MAAOF,aAStC,IAQeQ,GARM,kBACnB,8BACGV,GAAS7H,KAAI,SAACkI,EAAGM,GAAJ,OACZ,cAACL,GAAD,cAA6BC,SAAgB,IAANI,GAAaN,GAAlCA,EAAE5L,eChCpBmM,GAAgB,SAAC,GAAD,IAAGpU,EAAH,EAAGA,KAAM0H,EAAT,EAASA,MAAO+K,EAAhB,EAAgBA,MAAhB,OACpB,sBAAM9K,MAAO,CAAED,MAAOA,GAAtB,SACE,cAAC2I,EAAA,EAAD,CAAOvB,QAAS,cAAC/O,EAAA,EAAD,CAAMC,KAAMA,IAAUoO,QAASqE,EAAOS,GAAI,CAAC,QAAS,cAKlEmB,GAAY,UAEZC,GAAY,kBAChB,cAAC,GAAD,CAAetU,KAAK,QAAQ0H,MAJd,UAI8B+K,MAAO,yDAQ/C8B,GAAqB,SAAC,GAAD,IAAGhM,EAAH,EAAGA,IAAKN,EAAR,EAAQA,QAAR,OACzB,iCACE,uBAAMN,MAAO,CAAED,MAAO2M,IAAtB,UACE,cAACtU,EAAA,EAAD,CAAMC,KAAK,gBADb,0BAE0BiI,EAF1B,IAEoC,OAC5B,IACR,mBAAGqI,KAAM/H,EAAKrB,OAAO,OAArB,SACE,cAACsL,GAAA,EAAD,CAAQgC,UAAQ,EAAC1Q,KAAK,QAAtB,4BAOA2Q,GAAmB,SAAC,GAAD,IAAGzL,EAAH,EAAGA,MAAH,OACvB,cAAC,GAAD,CACEhJ,KAAK,WACL0H,MAAO2M,GACP5B,MAAK,kIAA6HzJ,EAA7H,QAYH0L,GAAwB,SAAC,GAMN,IALvBC,EAKsB,EALtBA,gBACAC,EAIsB,EAJtBA,cACAC,EAGsB,EAHtBA,QACA7L,EAEsB,EAFtBA,MACA8L,EACsB,EADtBA,iBAEA,OAAID,EAEA,sBAAMpC,MAAM,mBAAZ,SACE,cAAC1S,EAAA,EAAD,CAAM8U,SAAO,EAAC7U,KAAK,cAGdgJ,EACF,cAAC,GAAD,CAAkBA,MAAOA,IACvB2L,EACF,cAAC,GAAD,CAAoB1M,QAAS2M,EAAerM,IAAKuM,IAEnD,cAAC,GAAD,KAUHC,GAAgBjH,aAAS,YAAuE,IAApE7F,EAAmE,EAAnEA,QAAuB+M,GAA4C,EAA1DC,aAA0D,EAA5CD,QAAQE,EAAoC,EAApCA,UACvD9O,EAAcI,IAAdJ,UAGF+O,EAASC,mBACb,iBAAO,CACL9L,OAAQ,OACRC,KAAM,CAAEyL,OAAQA,EAAQhJ,QAAS/D,MAEnC,CAACA,EAAS+M,IATuF,EAe/FhI,aAAO,CAbO,+CAaKmI,IAAS,SAAC5M,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAH5DoI,EAZ2F,EAYjGlM,KACAH,EAbiG,EAajGA,MACAsM,EAdiG,EAcjGA,aAGF,OACE,eAACC,GAAA,EAAD,CAAMC,SAAO,EAAb,UACE,cAACD,GAAA,EAAKpW,KAAN,UACE,eAACoW,GAAA,EAAK9H,QAAN,WACE,cAAC8H,GAAA,EAAK/H,OAAN,+BACA,eAAC+H,GAAA,EAAKE,YAAN,WACE,eAACC,GAAA,EAAD,WAAQzN,EAAR,OACA,cAAC,GAAD,CACE0M,iBAAsC,KAAhB,OAALU,QAAK,IAALA,OAAA,EAAAA,EAAOM,WACxBf,eAAoB,OAALS,QAAK,IAALA,OAAA,EAAAA,EAAOO,gBAAiBP,EAAMO,eAAiB,GAC9Df,QAASS,EACTtM,MAAOA,EACP8L,iBAAkB,mCAAyC,OAALO,QAAK,IAALA,OAAA,EAAAA,EAAO9M,KAAM8M,EAAM9M,IAAM,MAEjF,mBAAGZ,MAAO,CAAEkO,WAAY,SAAxB,SACE,mBAAGvF,KAAM4E,EAAT,SACE,cAAC1C,GAAA,EAAD,CAAQpE,QAAQ,mBAAmB1G,MAAM,OAAO5D,KAAK,OAAOiN,KAAK,cAAc+E,cAAc,qBAMvG,cAACP,GAAA,EAAKpW,KAAN,UACE,eAACoW,GAAA,EAAK9H,QAAN,WACE,cAAC8H,GAAA,EAAK/H,OAAN,sBACA,cAAC+H,GAAA,EAAK9H,QAAN,UACE,cAACiI,GAAA,EAAD,UAAQV,iBAQde,GAAiB,kBACrB,eAACjF,GAAA,EAAD,CAASC,MAAI,EAAb,UACE,cAAChR,EAAA,EAAD,CAAMC,KAAK,iBAAiB6U,SAAO,IACnC,eAAC/D,GAAA,EAAQrD,QAAT,WACE,cAACqD,GAAA,EAAQtD,OAAT,4BADF,8CAOEwI,GAAe,SAACtM,GAAD,OACnB,eAACoH,GAAA,EAAD,CAASC,MAAI,EAAb,UACE,cAAChR,EAAA,EAAD,CAAMC,KAAK,gBACX,eAAC8Q,GAAA,EAAQrD,QAAT,WACE,cAACqD,GAAA,EAAQtD,OAAT,qCACC9D,EAAMgF,gBCjIPuH,GAAc,WAAO,IACjB7P,EAAcI,IAAdJ,UADgB,EAEA4G,aAAO,iBAAiB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAA5E9D,EAFgB,EAEhBA,KAAMH,EAFU,EAEVA,MAERkN,EAAwB/M,EAExBgN,EAAQ1W,OAAOC,SAAS0W,SACxBC,EAAO5W,OAAOC,SAAS2W,KAAKC,MAAM,KAAK,GACzCpB,EAAS,UAAMiB,EAAN,aAAgBE,EAAhB,SAEb,OAAKH,EACIlN,GACPnJ,QAAQC,IAAI,UAAWkJ,GAChB,cAAC,GAAD,UAAeA,KAItB,cAAC+L,GAAD,CACE9M,QAASiO,EAAUjO,QACnBgN,aAAciB,EAAUK,cACxBvB,OAAQkB,EAAUlB,OAClBE,UAAWA,IAXQ,cAAC,GAAD,KAgBnBsB,GAAY1I,aAAS,WAAO,IACxB1H,EAAcI,IAAdJ,UADuB,EAEP4G,aAAO,oBAAoB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAA/E9D,EAFuB,EAEvBA,KAAMH,EAFiB,EAEjBA,MAEd,IAAKG,EAAM,OAAO,cAAC,GAAD,IACb,GAAIH,EACP,OAAO,cAAC,GAAD,UAAeA,IAGxB,IAAMyN,EAAkBtN,EACxB,OACE,cAACoM,GAAA,EAAD,CAAMC,SAAO,EAAb,SACE,cAACD,GAAA,EAAKpW,KAAN,UACE,eAACoW,GAAA,EAAK9H,QAAN,WACE,cAAC8H,GAAA,EAAK/H,OAAN,yBACA,cAAC+H,GAAA,EAAKE,YAAN,UACE,eAACC,GAAA,EAAD,WAAQe,EAAOC,GAAf,mBAQNC,GAAkB,WACtB,OACE,gCACE,oBAAIxR,GAAG,WAAP,sBACA,eAAC8O,GAAA,EAAD,WACE,cAAC,GAAD,IACA,sBACA,cAAC,GAAD,IACA,sBACA,cAACuC,GAAD,IACA,sBACA,cAAC,IAAD,CAAMlX,GAAG,QAAT,SACE,cAACkT,GAAA,EAAD,kCAsCKoE,GA3BD9I,aAAS,YAAuC,EAApC+I,cAGxB,OAFqBrQ,IAAbL,SACCc,cAAc,SAErB,eAACgN,GAAA,EAAD,WACE,wDAEA,0CACA,eAACA,GAAA,EAAD,WACE,qDACA,cAAC,GAAD,IAEA,uDACA,8GACA,eAACsB,GAAA,EAAD,WACE,cAACA,GAAA,EAAKpW,KAAN,CAAW4R,KAAK,SAAS3C,QAAQ,4BACjC,cAACmH,GAAA,EAAKpW,KAAN,CAAW4R,KAAK,UAAU3C,QAAQ,qBAItC,cAAC,GAAD,IACA,+CACA,cAAC,GAAD,U,4DChHA0I,GAAmB,SAAC,GAA+C,IAA7C9S,EAA4C,EAA5CA,MAAO+S,EAAqC,EAArCA,SAAUC,EAA2B,EAA3BA,MAAOC,EAAoB,EAApBA,SAAoB,EACxC1F,qBADwC,mBAC/D2F,EAD+D,KACtDC,EADsD,KAMtE,OAJIH,GAASE,IACXC,GAAW,GACXF,GAAS,IAEPC,EAEA,eAAC,KAAD,CAAW3I,OAAK,EAAhB,UACE,cAAC6I,GAAA,EAAD,CAAO9I,YAAatK,EAAO2K,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAa4N,EAAS5N,EAAKnF,UAChE,cAACjE,EAAA,EAAD,CAAMC,KAAK,gBAAgB0H,MAAM,MAAM5D,KAAK,MAAMvE,QAAS,kBAAM4X,GAAW,SAI3E,cAACpX,EAAA,EAAD,CAAMC,KAAK,cAAc0H,MAAM,QAAQ5D,KAAK,MAAMvE,QAAS,kBAAM4X,GAAW,OAW/EE,GAAmBvJ,aACvB,YAAyF,IAAtFwJ,EAAqF,EAArFA,gBAAiBC,EAAoE,EAApEA,SAAUC,EAA0D,EAA1DA,QAASC,EAAiD,EAAjDA,QAASC,EAAwC,EAAxCA,WACtCtR,EAAcI,IAAdJ,UACF0G,EAAQrG,qBAAWsG,IACnB4K,EAAgB,uCAAG,4BAAAtP,EAAA,0DACnBoP,EADmB,uBAEjBG,EAAsC,CACxCrX,SAAU+W,EAAgB/W,SAC1BsX,OAAQP,EAAgBO,OACxB7X,KAAMsX,EAAgBtX,MAEP,KAAbuX,IACFK,EAAaC,OAASN,GAER,KAAZC,IACFI,EAAa5X,KAAOwX,GAXD,SAaA/N,EAAY,kCAAmCrD,EAAU6G,mBAAoB,CAChG3D,OAAQ,MACRC,KAAMqO,EACN/N,KAAK,IAhBc,cAkBRf,GACXgE,EAAMgL,QAAQ,UAAYR,EAAgB/W,SAAW,gBAErDuM,EAAM9D,MAAM,kBAAoBsO,EAAgB/W,UAElDwX,aAAO,uBAvBc,OAyBvBL,GAAuB,IAAZD,GAzBY,4CAAH,qDA4BtB,OACE,cAACjF,GAAA,EAAD,CAAQ9K,MAAO+P,EAAU,aAAU9R,EAAWpG,QAASoY,EAAvD,qBAWAK,GAAqBlK,aAAS,YAA2C,IAAxCmK,EAAuC,EAAvCA,QAC7B7R,EAAcI,IAAdJ,UACA2R,EAAWG,eAAXH,OACFjL,EAAQrG,qBAAWsG,IAHmD,EAIpDwE,oBAAkB,GAJkC,mBAIrE4G,EAJqE,KAI/DC,EAJ+D,KAKtEC,EAAkB,uCAAG,sBAAAhQ,EAAA,sEACJoB,EAAY,qCAAuCwO,EAAS7R,EAAU6G,mBAAoB,CAC7G3D,OAAQ,SACRO,KAAK,IAHkB,cAMZf,IACXsP,GAAQ,GACRL,EAAO,uBACPjL,EAAMgL,QAAQ,qCAEdhL,EAAM9D,MAAM,iCAXW,2CAAH,qDAcxB,OACE,eAACqH,EAAA,EAAD,CACEiI,eAAa,EACbpF,GAAG,QACHqF,QAAS,kBAAMH,GAAQ,IACvB1F,OAAQ,kBAAM0F,GAAQ,IACtBD,KAAMA,EACNrJ,QAAS,cAAC0D,GAAA,EAAD,CAAQ9K,MAAM,MAAd,oBANX,UAQE,cAAC2I,EAAA,EAAM7C,OAAP,4BACA,eAAC6C,EAAA,EAAM5C,QAAP,WACE,cAAC+E,GAAA,EAAD,CAAQjT,QAAS8Y,EAAoB3Q,MAAM,QAA3C,iBAGA,cAAC8K,GAAA,EAAD,CAAQjT,QAAS,kBAAM6Y,GAAQ,IAAQ1Q,MAAM,MAA7C,yBAQF8Q,GAAkB1K,aAAS,WAAO,IAC9B1H,EAAcI,IAAdJ,UACA2R,EAAWG,eAAXH,OACFjL,EAAQrG,qBAAWsG,IAHY,EAIbwE,mBAAiB,IAJJ,mBAI9BvR,EAJ8B,KAIxByY,EAJwB,OAKXlH,mBAAiB,IALN,mBAK9BmH,EAL8B,KAKvBC,EALuB,OAMXpH,oBAAkB,GANP,mBAM9ByF,EAN8B,KAMvBC,EANuB,KAO/B2B,EAAe,uCAAG,4BAAAvQ,EAAA,yDACF,KAAhBrI,EAAK6Y,OADa,uBAEpB/L,EAAM9D,MAAM,mDAFQ,iCAKlB4O,EAAsC,CAAErX,SAAU,GAAIsX,OAAQa,EAAO1Y,KAAMA,GALzD,SAMDyJ,EAAY,iCAAkCrD,EAAU6G,mBAAoB,CAC/F3D,OAAQ,MACRC,KAAMqO,EACN/N,KAAK,IATe,cAWTf,IACXiP,EAAO,uBACPU,EAAQ,IACRE,EAAS,IACT1B,GAAS,GACTnK,EAAMgL,QAAQ,mCAEdhL,EAAM9D,MAAM,8BAlBQ,2CAAH,qDAqBrB,OACE,eAAC8P,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,UACE,cAAC5B,GAAA,EAAD,CACEpT,MAAOhE,EACPsO,YAAatO,EACb2O,SAAU,SAAC/O,EAAGuJ,GACZsP,EAAQtP,EAAKnF,YAInB,cAAC8U,GAAA,EAAME,KAAP,UACE,cAAC,GAAD,CAAkBhV,MAAO0U,EAAO3B,SAAU4B,EAAU3B,MAAOA,EAAOC,SAAUA,MAE9E,cAAC6B,GAAA,EAAME,KAAP,IACA,cAACF,GAAA,EAAME,KAAP,UACE,cAACxG,GAAA,EAAD,CAAQ9K,MAAM,QAAQnI,QAAS,kBAAMqZ,KAArC,4BAYFK,GAAoBnL,aAAS,YAA+C,IAA5C8J,EAA2C,EAA3CA,aAA2C,EAC/CrG,mBAAiBqG,EAAaC,QADiB,mBACxEN,EADwE,KAC9D2B,EAD8D,OAEjD3H,mBAAiBqG,EAAa5X,MAFmB,mBAExEwX,EAFwE,KAE/D2B,EAF+D,OAGjD5H,oBAAkB,GAH+B,mBAGxEkG,EAHwE,KAG/DC,EAH+D,KAI/E,OACE,eAACoB,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,UACE,cAAC5B,GAAA,EAAD,CACEpE,UAAWyE,EACX2B,QAASxB,EAAa5X,KACtBgE,MAAOwT,EACP7I,SAAU,SAAC/O,EAAGuJ,GACZgQ,EAAWhQ,EAAKnF,YAItB,cAAC8U,GAAA,EAAME,KAAP,UACE,cAAC5B,GAAA,EAAD,CACEpE,UAAWyE,EACX2B,QAASxB,EAAaC,OACtB7T,MAAOuT,EACP5I,SAAU,SAAC/O,EAAGuJ,GACZ+P,EAAY/P,EAAKnF,YAIvB,cAAC8U,GAAA,EAAME,KAAP,UACE,cAAC5B,GAAA,EAAD,CAAOpE,UAAU,EAAMoG,QAASxB,EAAarX,SAAUyD,MAAO4T,EAAarX,aAE7E,eAACuY,GAAA,EAAME,KAAP,WACE,cAAC3B,GAAD,CACEC,gBAAiBM,EACjBJ,QAASA,EACTD,SAAUA,EACVE,QAASA,EACTC,WAAYA,IAEd,cAACM,GAAD,CAAoBC,QAASL,EAAarX,oBAM5C8Y,GAAgBvL,aAAS,WAAO,IAC5B1H,EAAcI,IAAdJ,UAD2B,EAEX4G,aAAO,uBAAuB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAAlF9D,EAF2B,EAE3BA,KAAMH,EAFqB,EAErBA,MAERsQ,OAA0C3T,IAATwD,EAAqB,GAAKA,EAQjE,OANAmQ,EAAMC,MAAK,SAAClR,EAA0BmR,GACpC,OAAInR,EAAErI,OAASwZ,EAAExZ,KACRqI,EAAE9H,SAAWiZ,EAAEjZ,SAAW,GAAK,EAEjC8H,EAAErI,KAAOwZ,EAAExZ,KAAO,GAAK,KAG9B,eAACyZ,GAAA,EAAOC,SAAR,CAAiBta,GAAI8R,WAArB,UACE,eAAC4H,GAAA,EAAD,CAAOa,QAAM,EAAb,UACE,eAACb,GAAA,EAAMtL,OAAP,WACE,cAACsL,GAAA,EAAMc,WAAP,mBACA,cAACd,GAAA,EAAMc,WAAP,8BACA,cAACd,GAAA,EAAMc,WAAP,uBACA,cAACd,GAAA,EAAMc,WAAP,yBAEF,eAACd,GAAA,EAAMe,KAAP,WACGP,GACCA,EAAM3N,KAAI,SAAC3H,GACT,OAAO,cAACiV,GAAD,CAAwCrB,aAAc5T,GAA9BA,EAAMzD,aAEzC,cAACiY,GAAD,UAGJ,cAACiB,GAAA,EAAD,CAAQ5R,OAAQmB,EAAhB,SACE,cAACwE,EAAA,EAAD,CAAQpO,GAAI,KAAMqI,UAAQ,EAA1B,0CAQFqS,GAAQhM,aAAS,WAAO,IACpB1H,EAAcI,IAAdJ,UADmB,EAEH4G,aAAO,qCAAqC,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAAhG9D,EAFmB,EAEnBA,KAMF4Q,GARqB,EAEb/Q,WAMyCrD,IAATwD,EAAqB,GAAKA,GAQxE,OANA4Q,EAAcR,MAAK,SAAClR,EAAyBmR,GAC3C,OAAInR,EAAEuP,aAAa5X,OAASwZ,EAAE5B,aAAa5X,KAClCqI,EAAEuP,aAAarX,SAAWiZ,EAAE5B,aAAarX,SAAW,GAAK,EAE3D8H,EAAEuP,aAAa5X,KAAOwZ,EAAE5B,aAAa5X,KAAO,GAAK,KAElD,mCACL+Z,EAAgBA,EAAcpO,KAAI,SAACqO,EAAK/U,GAAN,OAAgB,cAACgV,GAAD,CAA2CC,YAAaF,GAAxCA,EAAIpC,aAAarX,aAA4C,kCAS9H4Z,GAAU,uCAAG,WAAOzU,EAAiB0U,EAAoBtN,GAA5C,eAAAzE,EAAA,sEACIoB,EAAY,2BAA6B/D,EAAU,aAAc0U,EAAe,CAAEvQ,KAAK,EAAMP,OAAQ,WADzG,QACbd,EADa,QAEJM,IACXiP,aAAO,qCACPjL,EAAMgL,QAAQ,kBAEdjY,QAAQC,IAAI0I,GACZsE,EAAM9D,MAAM,0BAPG,2CAAH,0DAWViR,GAAYnM,aAAS,YAAsC,IAAnCoM,EAAkC,EAAlCA,YACpB9T,EAAcI,IAAdJ,UACF0G,EAAQrG,qBAAWsG,IACzB,OAAO,qCACL,cAACS,EAAA,EAAD,UAAS6M,KAAEC,WAAWJ,EAAYtC,aAAa5X,QAC/C,eAAC8Y,GAAA,EAAD,WACE,eAACA,GAAA,EAAMtL,OAAP,WACE,cAACsL,GAAA,EAAMc,WAAP,wBACA,cAACd,GAAA,EAAMc,WAAP,wBAEF,cAACd,GAAA,EAAMe,KAAP,UACGK,EAAYpU,OAASoU,EAAYpU,MAAM6F,KAAI,SAACkB,GAC3C,OAAO,eAACiM,GAAA,EAAMC,IAAP,WACL,cAACD,GAAA,EAAME,KAAP,UACGqB,KAAEC,WAAWzN,EAAK7M,QAErB,cAAC8Y,GAAA,EAAME,KAAP,UACE,cAACxG,GAAA,EAAD,CAAQ+H,UAAQ,EAAChb,QAAS,kBAAM4a,GAAWtN,EAAKtM,SAAU6F,EAAU6G,mBAAoBH,IAAxF,wBALmBD,EAAKtM,wBA4BvBia,GAZD1M,aAAS,WAGrB,OAFqBtH,IAAbL,SACCc,cAAc,SAErB,eAACgN,GAAA,EAAD,CAASxM,UAAQ,EAACE,MAAO,CAAE8G,UAAW,QAAtC,UACE,cAACjB,EAAA,EAAD,8BACA,cAAC6L,GAAD,IACA,cAACS,GAAD,U,6GCzTAW,GAAmB,SAACC,GACP,IAAD,EAAhB,OAAIA,GAEe,OAAVA,QAAU,IAAVA,GAAA,UAAAA,EAAY1a,YAAZ,eAAkBoC,QAASsY,EAAW1a,KAAtC,UAAgD0a,EAAWrX,YAA3D,wBAAsFqX,EAAWtX,UAAjG,KAEA,OASLuX,GAAmB,SAACC,GAAoD,IAA/BxW,EAA8B,wDACvEsD,EAAQ,QAIZ,QAHiB,IAAbtD,IACFsD,EAAQ,SAEFkT,GACN,KAAK1P,GACHxD,EAAQ,SACS,IAAbtD,IACFsD,EAAQ,WAEV,MACF,KAAKsD,GACHtD,EAAQ,UACR,MACF,KAAKuD,GACHvD,EAAQ,QACS,IAAbtD,IACFsD,EAAQ,SAEV,MACF,KAAKmD,GACHnD,EAAQ,QACS,IAAbtD,IAEFsD,EAAQ,WAMd,OAAOA,GAYT,IAYMmT,GAAgB,SAACxX,EAAqBD,EAAmB0X,EAAsBC,GACnF,IAAM/a,EACJ8a,GAA+B,KAAhBA,EAAqBA,EAAcT,KAAEC,WAAWjX,GAAe,MAAQ2X,GAAY5X,GACpG,OAAO2X,GAAa/a,EAAKoC,OAAS2Y,EAAY/a,EAAKib,UAAU,EAAGF,GAAa,MAAQ/a,GAGjFgb,GAAc,SAACtX,GACnB,OAAOwX,OAAOxX,GAAUyX,SAAS,EAAG,MAGhCC,GAAuB,SAAC,GAAkC,IAAhClP,EAA+B,EAA/BA,KAC9B,GAAa,UAATA,EACF,MAAO,GAET,IAAImP,EAAgBnP,EAAKoP,OAAO,GAAGC,cAAgBrP,EAAKsP,MAAM,GAE9D,OADAH,EAAgBA,EAAcI,WAAW,IAAK,MAI1CC,GAAiB,SAAC,GAAwD,IAAtDC,EAAqD,EAArDA,UAAWC,EAA0C,EAA1CA,UAA0C,EAA/B1P,KAC9C,OAAO0P,IAAcD,EAAYA,EAAY,IAAMC,EAAY,MAAQD,EAAY,KAG/EE,GAAmB,SAAC,GAAwC,IAAtCC,EAAqC,EAArCA,YAAaC,EAAwB,EAAxBA,aACvC,OAAoB,IAAhBD,GAAsC,MAAjBC,EAEhB,CACLC,WAAY,EACZjJ,MAAO,IAEgB,IAAhB+I,EAEF,CACLE,UAAW,EACXjJ,MAAO,SAEgB,KAAhB+I,GAAsBC,GAAgB,IACxC,CACLC,UAAW,EACXjJ,MAAO,QAEgB,MAAhB+I,EACF,CACLE,UAAW,EACXjJ,MAAO,SAEgB,MAAhB+I,EACF,CACLE,UAAW,EACXjJ,MAAO,QAGJ,CACLiJ,WAAY,EACZjJ,MAAO,KAILkJ,GAAU,SAACnZ,GACf,OAAQA,GACN,QACE,MAAO,GACT,KAAKoI,GACH,MAAO,IACT,KAAKL,GACH,MAAO,QACT,KAAKE,GACH,MAAO,IACT,KAAKD,GACH,MAAO,OACT,KAAKE,GACH,MAAO,MACT,KAAKC,GACH,MAAO,QCzJEiR,GAJK,CAClBC,oBAAqB,KCkCRC,GAvBI,SAAC,GAAmE,IAAjEC,EAAgE,EAAhEA,QAASC,EAAuD,EAAvDA,QAASvL,EAA8C,EAA9CA,KAAMwL,EAAwC,EAAxCA,UAAwC,IAA7B1H,eAA6B,SACpF,OACE,eAAC/D,GAAA,EAAD,CACEC,MAAI,EACJ9Q,UAAU,MAFZ,UAIE,cAACF,EAAA,EAAD,CACEC,KAAM+Q,EACNrJ,MAAO6U,EACP1H,QAASA,IAEX,eAAC/D,GAAA,EAAQrD,QAAT,YACU,OAAP4O,QAAO,IAAPA,OAAA,EAAAA,EAASja,SACR,cAAC0O,GAAA,EAAQtD,OAAT,CAAgBvN,UAAU,OAA1B,SACGoc,IAGJC,SCVHE,GAAe,SAACC,GACpB,IAAIzY,EAOJ,OAJEA,EADmB,kBAAVyY,EACDA,EAAMC,GAEND,EAEH,IAAIhb,KAAa,IAARuC,GAAc2Y,eAAe,UAGzCC,GAAe,SAAC5Y,GAEpB,OAAO6Y,KAAKC,MAAM9Y,GAAOiN,YAsNZ8L,GAnNKjP,aAAS,YAAsB,IAAD,cAAlBjL,EAAkB,EAAlBA,OAAkB,EACV2D,IAA9BD,EADwC,EACxCA,eAAgBH,EADwB,EACxBA,UAElBlF,EAAWqF,EAAeyW,cAHgB,EAIhBzL,mBAAShL,EAAe0W,eAJR,mBAIzC7Y,EAJyC,KAI/B8Y,EAJ+B,OAKd3L,mBAAShL,EAAe4W,gBALV,mBAKzCC,EALyC,KAK9BC,EAL8B,KAM1C/b,EAAW,OAAGJ,QAAH,IAAGA,GAAH,UAAGA,EAAUC,sBAAb,aAAG,EAA0BG,YAC1Cgc,EAAS,OAAGpc,QAAH,IAAGA,GAAH,UAAGA,EAAUC,sBAAb,aAAG,EAA0BI,UACtCgc,EAAO,OAAGrc,QAAH,IAAGA,GAAH,UAAGA,EAAUC,sBAAb,aAAG,EAA0BW,QAClCyG,EAAG,gCAAqB1F,QAArB,IAAqBA,OAArB,EAAqBA,EAAQQ,YAA7B,mBAA4CR,QAA5C,IAA4CA,OAA5C,EAA4CA,EAAQO,UAApD,2BAAyEP,QAAzE,IAAyEA,OAAzE,EAAyEA,EAAQP,iBAAjF,iBAA0Ggb,EAA1G,eAA0HC,EAA1H,oBAA6Ijc,GATtG,EAUC0L,aAC/CzE,GACA,SAAAA,GAAG,OAAIkB,EAAYlB,EAAKnC,EAAU6G,sBAClC,CAEEuQ,iBAAmD,KAA1B,OAARtc,QAAQ,IAARA,OAAA,EAAAA,EAAUC,eAAeC,MAAgB8a,GAAYC,oBAAsB,IALpFsB,EAVoC,EAU1CtU,KAAwBuU,EAVkB,EAUzB1U,MAoBvB,OAXA2U,qBAAU,WACRle,OAAOme,iBAAiB,WAAW,WACjCV,EAAY3W,EAAe0W,eAC3BI,EAAa9W,EAAe4W,qBAE7B,CAAC5W,IAGAkX,IAAS,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAWtU,QAC1BsU,EAAUtU,KAAOsU,EAAUtU,KAAKoQ,MAAK,SAAClR,EAAQmR,GAAT,OAAqBA,EAAEkD,GAAKrU,EAAEqU,OAGnE,sBACEzc,UAAU,QADZ,UAIE,sBAAKA,UAAU,sFAAf,UAME,cAACuQ,EAAA,EAAD,CACEC,IAAG,yBAAoB5N,EAAOQ,YAA3B,QACHwa,IAAI,8BACJvW,MAAO,GACPrH,UAAU,cAEZ,gCACE,iCACGwa,GAAiB5X,KAGpB,oBAAG5C,UAAU,eAAb,UACE,6CADF,KAC6B4C,EAAOP,iBAClC,wBAAQrC,UAAU,OAAlB,sBAFF,MAEqD,OAAN4C,QAAM,IAANA,OAAA,EAAAA,EAAQW,YAAa,MAClE,wBAAQvD,UAAU,OAAlB,gBAHF,MAG+C,OAAN4C,QAAM,IAANA,OAAA,EAAAA,EAAQO,YAAa,MAC5D,wBAAQnD,UAAU,OAAlB,mBAJF,YAI4C4C,QAJ5C,IAI4CA,GAJ5C,UAI4CA,EAAQU,4BAJpD,aAI4C,EAA8BqY,UAJ1E,WAIsF/Y,QAJtF,IAIsFA,GAJtF,UAIsFA,EAAQU,4BAJ9F,aAIsF,EAA8BoY,UAJpH,UAOF,sBAAK1b,UAAU,qBAAf,UAEE,cAACoQ,EAAA,EAAD,CAEEvB,QACE,cAAC0D,GAAA,EAAD,CACEjT,QAAS,kBAAMwY,aAAOxP,IACtBtI,UAAU,WACVyH,MAAM,OACN5D,KAAK,OAJP,SAME,cAAC/D,EAAA,EAAD,CACEC,KAAK,UACL8d,QAAM,MAIZ1P,QAAQ,8CAfV,gCACyBvL,QADzB,IACyBA,OADzB,EACyBA,EAAQO,YAgBjC,cAACiN,EAAA,EAAD,CAEEvB,QACE,cAAC0D,GAAA,EAAD,CACEjT,QAAS,kBAAMgH,EAAewX,aAAalb,EAAQA,EAAOP,kBAAkB,IAC5ErC,UAAU,WACVyH,MAAM,OACN5D,KAAK,OAJP,SAME,cAAC/D,EAAA,EAAD,CACEC,KAAK,SACL8d,QAAM,MAIZ1P,QAAQ,4BAfV,+BACwBvL,QADxB,IACwBA,OADxB,EACwBA,EAAQO,kBAkBnCsa,GACC,cAAC,GAAD,CACEpB,QAASoB,EACT3M,KAAK,uBACLwL,UAAU,QAGbrb,GACC,cAAC+S,GAAA,EAAD,CACExM,SAAUrD,EADZ,SAIGqZ,IAAS,OAAIA,QAAJ,IAAIA,GAAJ,UAAIA,EAAWtU,YAAf,aAAI,EAAiB/G,QAC7B,cAAC4b,GAAA,EAAD,CACE1W,MAAO,OACP4I,OAAQ,OACR+N,UAAW,QACXC,SAAU,OACVC,SAAU,IALZ,SAOE,eAACC,GAAA,EAAD,CAEE9W,MAAO,IACP4I,OAAQ,IACR/G,KAAI,OAAEsU,QAAF,IAAEA,OAAF,EAAEA,EAAWtU,KACjBkV,OAAQ,CACNzW,IAAK,GACL0W,MAAO,GACPC,MAAO,GACPC,OAAQ,IATZ,UAYE,cAACC,GAAA,EAAD,CACEC,OAAQtB,EAAY,OAAS,OAC7BuB,gBAAiB,QAEnB,cAACC,GAAA,EAAD,CAEE5e,KAAI,OAAGyd,QAAH,IAAGA,OAAH,EAAGA,EAAWnb,iBAClBuc,QAAQ,QACRC,QAAS,OACT5S,KAAM,OACN5E,MAAO,EACPyX,KAAK,EACLC,UAAW,CACTN,OAAQ,OACRO,YAAa,EACb7L,EAAG,IAEL8L,KAAMjD,GAAO,OAACwB,QAAD,IAACA,OAAD,EAACA,EAAWnb,kBACzBoc,OAAQ/D,GAAiB8C,EAAUnb,iBAAkB8B,GACrD+a,mBAAmB,GAdd,kBAAY1B,QAAZ,IAAYA,OAAZ,EAAYA,EAAWra,YAgB9B,cAACgc,GAAA,EAAD,CACEN,QAAQ,OACRD,QAAQ,KACRQ,cAAe7C,GACftQ,KAAK,SACLoT,MAAO,EACPC,GAAI,EACJC,GAAI,EACJC,OAAQ,CACN,UACA,WAEFC,SAAS,mBACTvP,SAAU,KAEZ,cAACwP,GAAA,EAAD,CACEd,QAAQ,QACRY,OAAQ,CACN,cACA,eAEFJ,cAAezC,KAGjB,cAACgD,GAAA,EAAD,CACEpT,EAAG,GACHqT,eAAgB,GAChBhB,QAASrC,GACTtM,OAAQ,KAEV,cAAC4P,GAAA,EAAD,CACEC,eAAgBvD,GAChBwD,UAAW,SAAChc,EAAYhE,EAAW0J,GACjC,MAAO,CACL1F,EAAMic,QAAQ,GACdxF,GAAiB5X,KAGrBqd,aAAc,CACZC,iBAA8B,IAAb/b,EAAqB,OAAS,OAC/CsD,OAAoB,IAAbtD,EAAqB,OAAS,OACrCgc,WAAY,YA1ElB,iBACU3C,QADV,IACUA,OADV,EACUA,EAAWra,UADrB,mBACkCqa,QADlC,IACkCA,OADlC,EACkCA,EAAWpa,gBA+E/C,cAAC,GAAD,CACEgZ,QAAQ,oBACRC,UAAgB,OAANzZ,QAAM,IAANA,GAAA,UAAAA,EAAQ7C,YAAR,eAAcoC,QAASS,EAAO7C,KAA9B,UAAwC6C,EAAOQ,cAAhD,iEACT0N,KAAK,cACLwL,UAAU,aA1KpB,8BAEuB1Z,QAFvB,IAEuBA,OAFvB,EAEuBA,EAAQO,UAF/B,YAE4CP,EAAOP,sB,mBClDjDsa,GAAe,SAAC5Y,GAEpB,OAAO6Y,KAAKC,MAAM9Y,GAAOiN,YAGrBuL,GAAe,SAACC,GACpB,IAAIzY,EAE2B,EAAV,kBAAVyY,EAEPzY,EADE,SAAUyY,IAAc,OAALA,QAAK,IAALA,GAAA,UAAAA,EAAOtT,YAAP,eAAa/G,QAAS,EACtC,OAAGqa,QAAH,IAAGA,OAAH,EAAGA,EAAOtT,KAAK,GAAGuT,GAEfD,EAAMC,GAGhB1Y,EAAQyY,EAEV,OAAIzY,EACK,IAAIvC,KAAa,IAARuC,GAAc2Y,eAAe,SAExC,IAyPM0D,GArPYvS,cAAS,YAA8E,IAAD,QAA1E7L,EAA0E,EAA1EA,QAASa,EAAiE,EAAjEA,gBAAiE,EACzE0D,IAA9BD,EADuG,EACvGA,eAAgBH,EADuF,EACvFA,UADuF,EAE/EmL,mBAAShL,EAAe0W,eAFuD,mBAExG7Y,EAFwG,KAE9F8Y,EAF8F,OAG7E3L,mBAAShL,EAAe4W,gBAHqD,mBAGxGC,EAHwG,KAG7FC,EAH6F,KAIzGnc,EAAWqF,EAAeyW,cAE1BM,EAAYpc,EAASC,eAAeI,UACpCgc,EAAUrc,EAASC,eAAeW,QAClCwe,EAAqBpf,EAASC,eAAeG,YAR4D,EA6BrFif,cAAe,SAAAtb,GAMvC,MAAO,CACLsD,IALA+U,GAAaC,GAAWtb,EAAQgD,GAC5B,yBAAkBhD,EAAQgD,GAAO5B,YAAjC,YAAgDpB,EAAQgD,GAAO7B,UAA/D,oBAAoFnB,EAAQgD,GAAO3C,iBAAnG,iBAA4Hgb,EAA5H,eAA4IC,EAA5I,aAAiK+C,EACjK,GAKJ9C,iBAAkD,IAAjCtc,EAASC,eAAeC,KAAgB8a,GAAYC,oBAAsB,MAG7F,SAAAjK,GAEE,OAAOzI,EAAYyI,EAAO3J,IAAKnC,EAAU6G,sBAE3C,CACEuT,eAAe,EAEfhD,iBAAkD,IAAjCtc,EAASC,eAAeC,KAAgB8a,GAAYC,oBAAsB,IAnBvFhT,EA7BuG,EA6BvGA,KAAMsX,EA7BiG,EA6BjGA,QAsBd9C,qBAAU,WACRle,OAAOme,iBAAiB,WAAW,WACjCV,EAAY3W,EAAe0W,eAC3BI,EAAa9W,EAAe4W,mBAE9BsD,EAAQxe,EAAQG,QAChBmE,EAAema,YAAYxf,EAASC,eAAeI,WACnDgF,EAAeoa,UAAUzf,EAASC,eAAeW,WAEjD,CACE2e,EACAxe,EACAsE,EACArF,EAASC,eAAeI,UACxBL,EAASC,eAAeW,QAL1B,OAMEG,QANF,IAMEA,OANF,EAMEA,EAASG,SAIb,IAAIwe,EAAoB,GAEpB,OAAJzX,QAAI,IAAJA,KAAMwC,KAAI,SAAC/L,GACT,OAAOghB,EAAare,KAAK3C,MAM3B,IAAMihB,EAAkB,UAAGD,SAAH,aAAG,EAAcE,QAAO,SAAClhB,GAAD,aAAgC,KAAnB,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAGuJ,YAAH,eAAS/G,WAErE,OADAwe,EAAY,UAAGA,SAAH,aAAG,EAAcE,QAAO,SAAClhB,GAAD,aAAa,OAADA,QAAC,IAADA,GAAA,UAAAA,EAAGuJ,YAAH,eAAS/G,QAAS,KAEhE,gCAEIye,EAAmBze,OAAS,EAE1B,eAAC0O,GAAA,EAAD,CACEpJ,MAAM,OADR,UAGE,cAAC3H,EAAA,EAAD,CAAMC,KAAK,gBAHb,4EAKE,sBAAMC,UAAU,iCAAhB,SACG4gB,EAAmBlV,KAAI,SAAC/L,GAAD,cAAYA,QAAZ,IAAYA,OAAZ,EAAYA,EAAGI,QAAM+gB,KAAK,WAGpD,GAEN,sBAAK9gB,UAAU,yFAAf,UAYE,cAACuQ,EAAA,EAAD,CACEC,IAAG,yBAAoBxO,EAAQ,GAAGoB,YAA/B,QACHwa,IAAI,8BACJvW,MAAO,GACPrH,UAAU,cAEZ,gCACE,mCACE,sBAAMA,UAAU,kBAAhB,SAAmC6C,IADrC,wBAC4Eb,QAD5E,IAC4EA,OAD5E,EAC4EA,EAASG,OADrF,yBAGA,cAACiO,EAAA,EAAD,CACEvB,QACE,cAAC/O,EAAA,EAAD,CACEC,KAAK,kBACLC,UAAU,SAGdmO,QAAO,qCAAgCtL,EAAhC,0EAET,oBAAG7C,UAAU,+BAAb,UAEE,6CAFF,KAE6B6C,EAF7B,MAEgD,+CAFhD,KAE6E8d,EAAajV,KAAI,SAAC/L,GAAD,OAAYA,EAAEI,QAAM+gB,KAAK,gBAK7G,QAAZ,EAAAH,SAAA,eAAcxe,QAAS,IAAK,UAAAlB,EAASe,eAAT,eAAkBG,QAAS,EAErD,cAAC6R,GAAA,EAAD,CACExM,SAAUrD,EADZ,SAGE,cAAC4Z,GAAA,EAAD,CACE1W,MAAO,OACP4I,OAAQ,OACR+N,UAAW,QACXC,SAAU,OACVC,SAAU,IALZ,SAOE,eAACC,GAAA,EAAD,CAEE9W,MAAO,IACP4I,OAAQ,IACR/G,KAAMyX,EACNvC,OAAQ,CACNzW,IAAK,GACL0W,MAAO,GACPC,MAAO,GACPC,OAAQ,IATZ,UAYE,cAACC,GAAA,EAAD,CACEC,OAAQtB,EAAY,OAAS,SAE9BwD,EAAajV,KAAI,SAACqV,EAAoBC,GAAgC,IAAD,EACpE,OACE,cAACrC,GAAA,EAAD,CAOE5e,MAAmB,OAAbghB,QAAa,IAAbA,GAAA,UAAAA,EAAehhB,YAAf,eAAqBoC,QAAS4e,EAAchhB,KAA5C,cAA0DghB,EAAc5d,WAC9E+F,KAAM6X,EAAc7X,KACpB0V,QAAQ,QACRqC,cAAc,EACdpC,QAAS,OACT5S,KAAM,OACN6S,KAAK,EACLC,UAAW,CACTN,OAAQ,OACRO,YAAa,EACb7L,EAAG,IAEL8L,KAAMjD,GAAQnZ,GACd4b,OAAQ/D,GAAiB7X,EAAiBsB,GAC1C+a,mBAAmB,GArBrB,iBACiB8B,OAwBrB,cAAC7B,GAAA,EAAD,CACEN,QAAQ,OACRD,QAAQ,KACRQ,cAAe7C,GACftQ,KAAK,SACLoT,MAAO,EACPC,GAAI,EACJC,GAAI,EAEJC,OAAQ,CACN,cACA,eAEFC,SAAS,qBAEX,cAACC,GAAA,EAAD,CACEd,QAAQ,QAERY,OAAQ,CACN,cACA,eAEFJ,cAAezC,KAGjB,cAACgD,GAAA,EAAD,CACEpT,EAAG,GACHqT,eAAgB,GAChBhB,QAASrC,GACTtM,OAAQ,KAEV,cAAC4P,GAAA,EAAD,CACEC,eAAgBvD,GAChBwD,UAAW,SAAChc,EAAYhE,EAAW0J,GACjC,MAAO,CAAC1F,EAAMic,QAAQ,GAAIjgB,IAE5BkgB,aAAc,CACZC,iBAA8B,IAAb/b,EAAqB,OAAS,OAC/CsD,OAAoB,IAAbtD,EAAqB,OAAS,OACrCgc,WAAY,YAjFlB,wBACwBtd,QAuF5B,eAACgO,GAAA,EAAD,WACE,cAAC/Q,EAAA,EAAD,CAAMC,KAAK,cAAc8D,KAAK,UADhC,4FAzJN,wBAA2BhB,O,UCjBhBqe,I,cA/FKrT,aAAS,YAA8C,IAA3C7L,EAA0C,EAA1CA,QAAS3C,EAAiC,EAAjCA,GAAI8hB,EAA6B,EAA7BA,KACnChb,EAAcI,IAAdJ,UADgE,EAEhDmL,mBAAiB,0BAF+B,mBAEjEvR,EAFiE,KAE3DyY,EAF2D,OAGrClH,oBAAkB,GAHmB,mBAGjE8P,EAHiE,KAGrDC,EAHqD,KAIlExU,EAAQrG,qBAAWsG,IAoBnBwU,EAAqB,uCAAG,kCAAAlZ,EAAA,6DAC5BiZ,GAAa,GACbzhB,QAAQ2hB,IAAIvf,GAFgB,SAGLwH,EACrB,oCAAsC2X,EAAO,OAAS9hB,EAAK,IAAM2C,EAAQ0J,KAAI,SAAC9I,GAAD,MAAgB,UAAYA,EAAOtC,YAAUwgB,KAAK,KAC/H3a,EAAU6G,mBACV,CACEvE,QAAS,CACP+Y,QAAS,MACT,eAAgB,6BAElB5X,KAAK,IAXmB,YAGtBrB,EAHsB,QAcfM,GAde,iCAePN,EAASyB,OAfF,OAepBA,EAfoB,OAgBpB1B,EAAM9I,OAAOiiB,IAAIC,gBAAgB1X,IACjC2X,EAAOC,SAASC,cAAc,MAC/BxR,KAAO/H,EACZqZ,EAAKG,aAAa,WAAY/hB,EAAI,QAClC6hB,SAAStY,KAAKyY,YAAYJ,GAC1BA,EAAKK,QACLnV,EAAMgL,QAAQ,oBAtBY,wBAwB1BhL,EAAM9D,MAAM,sBAxBc,QA0B5BsY,GAAa,GA1Be,4CAAH,qDA6B3B,OACE,cAACjR,EAAA,EAAD,CACEjR,GAAIoT,KACJU,GAAG,QACH3G,SAAS,gBACT6B,QACE,sBAAKnO,UAAU,YAAf,UACE,wDACA,eAACmX,GAAA,EAAD,CACE9I,YAAatO,EACb2O,SAAU,SAAC/O,EAAGuJ,GACZsP,EAAQtP,EAAKnF,QAHjB,UAME,uBACEsK,YAAY,wCACZtK,MAAOhE,IAET,cAACwS,GAAA,EAAD,CACE0P,QAAQ,QACRxa,MAAM,OACNnI,QAASgiB,EACTvO,WAAU,OAAChT,QAAD,IAACA,OAAD,EAACA,EAAMoC,QACjB6N,SAAS,OALX,SAjEJoR,EACK,cAAC/T,EAAA,EAAD,CAAQzF,QAAM,EAACsa,QAAM,EAACre,KAAK,UAGlC,cAACuM,EAAA,EAAD,CACEvB,QACE,sBACEnH,MAAO,CAAEL,MAAO,QAChBrH,UAAU,4BAFZ,UAIE,cAACF,EAAA,EAAD,CAAMC,KAAK,aAJb,cAOFoO,QAAQ,8CAiEVU,QACE,cAAC0D,GAAA,EAAD,CACEzB,KAAK,WACLrJ,MAAM,OACN+K,MAAM,iCC1FV2P,GAAU5gB,MAASG,SAAS,GAAI,SAASD,QAAQ,SACjD2gB,GAAU7gB,MA8TD8gB,GA5TMxU,aAAS,YAAwB,IAArB5M,EAAoB,EAApBA,SACvBqF,EAAmBC,IAAnBD,eAD2C,EAEjBgL,mBAAc/P,MAASE,QAAQ,QAFd,mBAE5C4b,EAF4C,KAEjCiF,EAFiC,OAGrBhR,mBAAc/P,OAHO,mBAG5C+b,EAH4C,KAGnCiF,EAHmC,OAIXjR,mBAAc,MAJH,mBAI5CkR,EAJ4C,KAI9BC,EAJ8B,KAM7CC,EAAenhB,IAAOC,KAAKmhB,OAK3BC,EAAiBrhB,IAAOC,KAAKmhB,OAAOlhB,QAAQ,OAC5CohB,EAAethB,IAAOC,KAAKmhB,OAAO7gB,MAAM,OAExCghB,EAAoB,SAAC,GAAiC,IAA/BzF,EAA8B,EAA9BA,UAAWC,EAAmB,EAAnBA,QAClCD,IAEFpc,EAASC,eAAeI,UAAY+b,EAAUzb,OAE9C0gB,EAAajF,IAEXC,IACFrc,EAASC,eAAeW,QAAUyb,EAAQ1b,OAC1C2gB,EAAWjF,GAEPA,EAAQ1b,QAAU8gB,EAAa9gB,QAAU0b,EAAQ1b,SAAWihB,EAAajhB,OAC3EX,EAASC,eAAeC,MAAO,EAE/BF,EAASC,eAAeC,MAAO,IAwGrC,OACE,gCACE,eAAC4hB,GAAA,EAAD,CACE/iB,UAAU,oCACVgjB,cAAe,SAFjB,UAKE,eAACD,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,EAFV,UAIE,qBAAKnjB,UAAU,OAAf,SACE,qDAEF,eAACuS,GAAA,EAAO6Q,MAAR,CACEvf,KAAK,QADP,UAGE,cAACuM,EAAA,EAAD,CAEEjC,QAAQ,uDACR7B,SAAS,cACTuC,QACE,eAAC0D,GAAA,EAAD,CACE9K,MAAQxG,EAASC,eAAeC,KAAQ,QAAU,OAClD7B,QAAS,kBAzHvB2B,EAASC,eAAeC,MAAQF,EAASC,eAAeC,WACnB,IAAjCF,EAASC,eAAeC,OAE1BF,EAASC,eAAeI,UAAYshB,EAAehhB,OAEnDX,EAASC,eAAeW,QAAU6gB,EAAa9gB,OAC/C0gB,EAAaM,GACbL,EAAWG,MAmHC1iB,WAA4C,IAAjCiB,EAASC,eAAeC,KAAgB,YAAc,aAHnE,UAKE,cAACrB,EAAA,EAAD,CACEC,KAAK,YACLC,WAAaiB,EAASC,eAAeC,KAAQ,SAAW,IAAM,YAPlE,WAJG,oBAiBP,cAACiP,EAAA,EAAD,CAEEjC,QAAQ,iMACR7B,SAAS,cACTuC,QACE,eAAC0D,GAAA,EAAD,CACEjT,QAAS,kBAAMgH,EAAe+c,6BAC9Bzb,QAAmD,IAA3C3G,EAASC,eAAeE,eAChCqG,OAAkD,IAA3CxG,EAASC,eAAeE,eAA0B,QAAU,OACnEpB,WAAsD,IAA3CiB,EAASC,eAAeE,eAA0B,YAAc,aAJ7E,UAME,cAACtB,EAAA,EAAD,CACEC,KAAK,qBAPT,YAJG,yBAiBP,cAAC,GAAD,CACEiC,QAASf,EAASe,QAClB3C,GAAIkC,IAAO+b,GAASxb,MAAM,OAAOF,OACjCuf,KAAM5f,IAAO8b,GAAWzb,eAK9B,eAACmhB,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,EAFV,UAIE,qBAAKnjB,UAAU,OAAf,SACE,oDAEF,cAACuS,GAAA,EAAO6Q,MAAR,CACEvf,KAAK,QADP,SAtEiB,CAAC,GAAI,IAAK,IAAK,KA0EX6H,KAAI,SAAC3H,EAAeG,GACnC,OACE,cAACkM,EAAA,EAAD,CAEEjC,QAAO,kEAA6DpK,EAA7D,8GACPuI,SAAS,gBACTuC,QACE,cAAC0D,GAAA,EAAD,CACE/K,UAAQ,EACRlI,QAAS,kBAAMgH,EAAegd,cAAcvf,IAC5C6D,OAAQ3G,EAASC,eAAeG,cAAgB0C,EAHlD,SAKGA,KAVP,6BAC6BA,YAmBvC,eAACgf,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,EAFV,UAIE,qBAAKnjB,UAAU,OAAf,SACE,mDAEF,cAACuS,GAAA,EAAO6Q,MAAR,CACEvf,KAAK,QADP,SAtGoB,CAAC,QAAS,SAAU,SA0GhB6H,KAAI,SAAC3H,EAAeG,GACtC,OACE,cAACkM,EAAA,EAAD,CAEEjC,QAAO,+BAA0BpK,EAA1B,KACPuI,SAAS,gBACTuC,QACE,cAAC0D,GAAA,EAAD,CAEE/K,UAAQ,EACRxH,UAAU,kBACVV,QAAS,kBAAMgH,EAAeid,aAAaxf,IAC3C6D,OAAQ3G,EAASC,eAAea,aAAegC,EAAMiN,WALvD,SAOGjN,GAPH,oBACoBA,EADpB,YAC6BG,KANjC,qBACqBH,YAqB/B,eAACgf,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,EACRnjB,UAAU,UAHZ,UAKE,qBAAKA,UAAU,OAAf,SACE,iDAAmB,cAACF,EAAA,EAAD,CAAMC,KAAK,gBAA9B,YAEF,cAAC,mBAAD,CACEyjB,eAAgB,EAChBpB,QAAS7gB,MAASkiB,IAAI,EAAG,QACzBtB,QAAS5gB,MAASG,SAAS,EAAG,QAC9BgiB,4BAA0B,EAE1BrG,UAAW9b,IAA2C,IAApCN,EAASC,eAAeI,WAC1Cgc,QAAS/b,IAAyC,IAAlCN,EAASC,eAAeW,SACxC8hB,YAAY,uBACZC,UAAU,qBACVC,cAAef,EACfN,aAAcA,EACdsB,cAAe,SAACtB,GAAD,OAAkBC,EAAgBD,IACjDuB,cAAc,aACdC,cAAe,EACfC,eAAgB,SAACC,GAAD,OAAUA,EAAKC,SAAShC,GAAS,QAAU+B,EAAKE,QAAQhC,GAAS,QACjFiC,mBA/OgB,WACxB,OACE,eAAC9R,GAAA,EAAO6Q,MAAR,CACE3b,MAAM,OACND,UAAQ,EACRxH,UAAU,MACVsO,OAAO,EAJT,UAME,cAACiE,GAAA,EAAD,CACEjT,QAAS,WACPwjB,EACE,CACEzF,UAAW9b,IAAO,IAAIC,MAAQE,SAAS,EAAG,QAC1C4b,QAAS/b,IAAO,IAAIC,SAL5B,uBAYA,cAAC+Q,GAAA,EAAD,CACEjT,QAAS,WACPwjB,EACE,CACEzF,UAAW9b,IAAO,IAAIC,MAAQC,QAAQ,OACtC6b,QAAS/b,IAAO,IAAIC,SAL5B,mBAYA,cAAC4O,EAAA,EAAD,CAEEvB,QACE,cAAC0D,GAAA,EAAD,CACEjT,QAAS,WACPwjB,EACE,CACEzF,UAAW9b,IAAO,IAAIC,MAAQE,SAAS,EAAG,OAAOD,QAAQ,OACzD6b,QAAS/b,IAAO,IAAIC,MAAQE,SAAS,EAAG,OAAOI,MAAM,UAL7D,uBAaFqM,QAAQ,yDAfH,yBAiBP,cAACoE,GAAA,EAAD,CACEjT,QAAS,WACPwjB,EACE,CACEzF,UAAW9b,IAAO,IAAIC,MAAQC,QAAQ,WACtC6b,QAAS/b,IAAO,IAAIC,MAAQM,MAAM,UAL1C,uBAYA,cAACsO,EAAA,EAAD,CAEEvB,QACE,cAAC0D,GAAA,EAAD,CACEjT,QAAS,WACPwjB,EACE,CACEzF,UAAW9b,IAAO,IAAIC,MAAQE,SAAS,EAAG,QAAQD,QAAQ,WAC1D6b,QAAS/b,IAAO,IAAIC,MAAQE,SAAS,EAAG,QAAQI,MAAM,cAL9D,uBAaFqM,QAAQ,yDAfH,qCAqLP,cAAC0C,GAAA,EAAD,CACEpJ,OAAwC,IAAjCxG,EAASC,eAAeC,KAAgB,OAAS,OACxDnB,UAAU,YAFZ,UAIoC,IAAjCiB,EAASC,eAAeC,KAEvB,qCACE,cAACrB,EAAA,EAAD,CACEC,KAAK,cAFT,4CAI4Ckc,GAAYC,oBAAsB,IAJ9E,eAOA,qCACE,cAACpc,EAAA,EAAD,CACEC,KAAK,gBAFT,iF,UCpTNukB,GAA2B,uBAgNlBC,GA9MK1W,aAAS,YAAmJ,IAAD,MAA/I2W,EAA+I,EAA/IA,MAAOC,EAAwI,EAAxIA,YAAaC,EAA2H,EAA3HA,mBAAoBC,EAAuG,EAAvGA,gBAAuG,EAC7HrT,oBAAS,GADoH,mBACtKsT,EADsK,KACpJC,EADoJ,OAEnJvT,oBAAS,GAF0I,mBAEtKwT,EAFsK,KAE/JC,EAF+J,OAG/IzT,oBAAS,GAHsI,mBAGtKsD,EAHsK,KAG7JoQ,EAH6J,OAInJ1T,mBAAS,IAJ0I,mBAItKvI,EAJsK,KAI/Jkc,EAJ+J,OAKvI1e,IAA9BD,EALqK,EAKrKA,eAAgBH,EALqJ,EAKrJA,UAGpB+e,EAAc5e,EAAeyW,cAC7BoI,EAAY,EACZC,EAAoBphB,aAAaC,QAAQqgB,IAEzCc,IACFD,EAAY1iB,KAAKC,MAAM0iB,GACvBV,EAAmBS,IAGrB,IAoEIzb,EAAO,UAAG8a,SAAH,aAAG,EAAO9Y,KAAI,SAAC2Z,EAAWrgB,GAAmB,IAAD,EACrD,MAAO,CACLd,IAAI,eAAD,OAAiBc,GACpBjB,MAAOiB,EACPkJ,KAAK,GAAD,QAAS,OAAJmX,QAAI,IAAJA,OAAA,EAAAA,EAAMtlB,MAAOslB,EAAKtlB,KAAO,eAA9B,aAAoD,OAAJslB,QAAI,IAAJA,GAAA,UAAAA,EAAMrjB,eAAN,eAAeG,QAAf,aAA8BkjB,EAAKrjB,QAAQG,OAA3C,cAAgE,QAGxH,OACE,iCACQ,QAAL,EAAAqiB,SAAA,eAAOriB,QAAS,EAEf,qCACE,cAACmjB,GAAA,EAAD,CACEjX,YAAY,kBACZ3E,QAASA,EACT3F,MAAOohB,EACPzW,SAAU,SAAC/O,EAAD,GAAmB,IAAboE,EAAY,EAAZA,MAEd2gB,EAAmB3gB,GAEnBC,aAAaK,QAAQigB,GAA0B7hB,KAAKE,UAAUoB,OAGlE,cAACqM,EAAA,EAAD,CACEjC,QAAQ,sFACRU,QACE,cAAC/O,EAAA,EAAD,CACEE,UAAU,OACVD,KAAK,iCAMb,iDAID6kB,EAEG,qCACE,cAACzN,GAAA,EAAD,CACE9I,YAAY,0BACZrO,UAAU,OACV+D,MAAK,OAAEmhB,QAAF,IAAEA,OAAF,EAAEA,EAAanlB,KACpB2O,SAAU,SAAC/O,EAAG4lB,GACZjf,EAAekf,gBAAf,OAA+BD,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAGxhB,UAGtC,eAACwO,GAAA,EAAO6Q,MAAR,CACEpjB,UAAU,OADZ,UAGE,cAACuS,GAAA,EAAD,CACEjT,QAAS,kBAAMulB,GAAoB,IACnCpd,MAAM,OAFR,oBAMA,cAAC8K,GAAA,EAAD,CACEjT,QAAS,kBA9HrB0lB,GAAW,QACX5b,EAAiB8b,EAAa/e,GAC3BwC,MAAK,SAAAJ,GAEJic,EAAMG,GAAmBpc,EACzBkc,EAAYD,GAEZO,GAAS,GACTF,GAAoB,GAEpBvS,YAAW,WACTyS,GAAS,KACR,QAEJ3R,OAAM,SAACzT,GACNslB,EAAStlB,EAAEqR,eAEZyU,SAAQ,WACPT,GAAW,OA6GHvd,MAAM,QACNsL,UAAsB,IAAZ6B,KAAoB,OAACsQ,QAAD,IAACA,OAAD,EAACA,EAAanlB,QAAmB,OAAXmlB,QAAW,IAAXA,GAAA,UAAAA,EAAanlB,YAAb,eAAmBoC,QAAS,EAHlF,qBAQyB,QAAf,OAAX+iB,QAAW,IAAXA,OAAA,EAAAA,EAAa5kB,WACZ,eAACiS,GAAA,EAAD,CACEjT,QAAS,WAhHjBE,OAAOkmB,QAAP,iDAAkDR,QAAlD,IAAkDA,OAAlD,EAAkDA,EAAanlB,KAA/D,QACFilB,GAAW,GACXzb,EAAmB2b,EAAa/e,GAC7BwC,MAAK,SAAAkP,IACY,IAAZA,KAEF2M,EAAQA,EAAMhhB,OAAOmhB,EAAiB,IAE3BxiB,QAA2B,IAAjBqiB,EAAMriB,QACzBqiB,EAAMliB,KAAK,CACThC,SAAU,KACVP,KAAM,WACNmB,eAAgB,CACdC,MAAM,EACNC,gBAAgB,EAChBC,YAAa,IACbC,UAAWC,IAAO,IAAIC,MAAQC,QAAQ,OAAOC,UAAS,IAAIF,MAAOG,oBAAqB,UAAUC,OAChGC,QAASN,IAAO,IAAIC,MAAQM,MAAM,OAAOJ,UAAS,IAAIF,MAAOG,oBAAqB,UAAUC,OAC5FG,WAAY,UAEdC,QAAS,KAGbyiB,EAAYD,GAEZE,EAAmB,GAEnBK,GAAS,GACTF,GAAoB,GAEpBvS,YAAW,WACTyS,GAAS,KACR,SAGN3R,OAAM,SAACzT,GACNslB,EAAStlB,EAAEqR,eAEZyU,SAAQ,WACPT,GAAW,QA0ELvd,MAAM,MACNsL,UAAsB,IAAZ6B,EACV5U,UAAU,OAJZ,mBAOE,cAACF,EAAA,EAAD,CACEC,KAAK,SACLC,UAAU,YAIf+I,GACC,cAAC,GAAD,CACE+H,KAAK,UACLuL,QAAO,yBAAoBtT,MAGpB,IAAV+b,GACC,uBAAM9kB,UAAU,OAAhB,UACE,cAACF,EAAA,EAAD,CACEC,KAAK,eACL0H,MAAM,OACNzH,UAAU,SAJd,aASW,IAAZ4U,GACC,uBAAM5U,UAAU,OAAhB,UACE,cAACF,EAAA,EAAD,CAAMC,KAAK,eAAe6U,SAAO,IADnC,kBAQN,mCACE,cAACrC,GAAA,EAAD,CACEjT,QAAS,kBAAMulB,GAAoB,IACnCpd,MAAM,QAFR,SAK6B,QAAf,OAAXyd,QAAW,IAAXA,OAAA,EAAAA,EAAa5kB,UAAoB,OAAS,iBC1LjDqlB,GAAoB,SAAC5jB,GAEzB,OADaA,EAAW6jB,eAEtB,IAAK,QACH,OAAO,EACT,IAAK,SACH,OAAO,EACT,IAAK,QACH,OAAO,GACT,QACE,OAAO,IAOPC,GAAsBhY,aAAS,YAAwG,IAAD,EAApGpO,EAAoG,EAApGA,SAAUqmB,EAA0F,EAA1FA,cAAeC,EAA2E,EAA3EA,SACvDzf,EAAmBC,IAAnBD,eACR,OACE,gCACE,oBAEEtG,UAAU,uBAFZ,SAIGP,EAASM,MAJZ,UACUN,EAASM,KADnB,YAC2B+lB,IAF7B,OAOGrmB,QAPH,IAOGA,GAPH,UAOGA,EAAUuC,eAPb,aAOG,EAAmB0J,KAAI,SAAC9I,EAAaK,GAAyB,IAAD,IAC5D,OACE,sBAEEjD,UAAS,eACCsG,EAAepD,+BAA+BN,EAAOO,UAAWP,EAAOQ,YAAaR,EAAOP,mBAAqB,EAAI,gBAAkB,IAHlJ,UAME,sBAAKrC,UAAU,6EAAf,UACE,qBACEwQ,IAAG,yBAAoB5N,EAAOQ,YAA3B,QACHwa,IAAI,+BACJvW,MAAO,GACPrH,UAAU,SAEZ,gCACE,sBAAKA,UAAU,YAAf,UACG4C,EAAO7C,KADV,UACuB6C,EAAOO,aAE9B,qBAAKnD,UAAU,cAAf,SACGP,EAASM,aAKhB,qBAAKC,UAAU,WAAf,gBAEG4C,QAFH,IAEGA,GAFH,UAEGA,EAAQojB,oBAFX,iBAEG,EAAsB1M,MAAK,SAAClR,EAAQmR,GAAT,OAAqBnR,EAAImR,GAAK,EAAI,YAFhE,aAEG,EAAkE7N,KAAI,SAACiP,EAAqBsL,GAC3F,OACE,cAACrT,GAAA,EAAD,CAEEE,MAAO,uBAAO9S,UAAU,aAAjB,SAA+B2a,IACtC3a,UAAU,+BACV0O,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAa5C,EAAewX,aAAalb,EAAQ+X,EAAazR,EAAKpG,QAASrD,EAASymB,KAAMH,IACrGlT,QAAM,EACN/P,QAASwD,EAAepD,+BAA+BN,EAAOO,UAAWP,EAAOQ,YAAauX,IAAgB,GAN/G,eACeoL,EADf,+BAC8CpL,EAD9C,YAC6DsL,WA5BrE,eACeH,EADf,YACgC7iB,aAkDpCwD,GAAcoH,aAAS,YAA+D,IAAD,EAoDrD,IApDNsY,EAA2D,EAA3DA,SAAUllB,EAAiD,EAAjDA,SAChCqF,EAAmBC,IAAnBD,eADiF,EAEnDgL,mBAAc,GAFqC,mBAElF8U,EAFkF,KAErEC,EAFqE,KAQnFC,EAAyBH,EAASI,MAAMpkB,OAAS,EAEjDqkB,EAAiB,SAACxhB,GAEpBqhB,EADErhB,IAAUohB,EACG,KAEAphB,IAObyhB,EAAkBtR,mBACtB,WAIE,OAHAgR,EAASI,MAAM7a,KAAI,SAACgb,EAAW1hB,GAAmB,IAAD,EAC/C,OAAOmhB,EAASI,MAAMvhB,GAAO2hB,iBAAtB,OAAyCD,QAAzC,IAAyCA,GAAzC,UAAyCA,EAAMC,wBAA/C,aAAyC,EAAwB9F,QAAO,SAAC+F,GAAD,OAAYA,EAAE5kB,QAAQG,aAEhG,CACLpC,KAAMomB,EAASpmB,KACfwmB,MAAOJ,EAASI,SAEjB,CAACJ,IAGAU,EAAoB1R,mBACxB,WAKE,MAAO,CACLnT,QAAO,OAAEmkB,QAAF,IAAEA,OAAF,EAAEA,EAAUW,mBACnBZ,KAAM,CACJja,KAAM,aACNyP,UAAW,EACXC,UAAW,EACXE,YAAa,EACbC,aAAc,MAGjB,CAACqK,IAGN,cAAIM,QAAJ,IAAIA,GAAJ,UAAIA,EAAiBF,aAArB,aAAI,EAAwBpkB,QAExB,cAAC2N,EAAA,EAAD,CAAQlI,QAAM,EAAd,SACE,cAAC3I,EAAA,EAAD,CAAM+Q,SAAS,MAAf,SACE,sBAAKhQ,UAAU,4FAAf,UACE,qBACEA,UAAU,iCADZ,wBAKW,OAARiB,QAAQ,IAARA,GAAA,UAAAA,EAAUe,eAAV,eAAmBG,QAAS,GAC3B,cAACiO,EAAA,EAAD,CAEEvB,QACE,eAAC0D,GAAA,EAAD,CACEvS,UAAU,mCACVyH,MAAM,QACN5D,KAAK,QACLvE,QAAS,WAAQgH,EAAeygB,mBAAmB,KAJrD,UAME,cAACjnB,EAAA,EAAD,CAAMC,KAAK,UANb,eAUFoO,QAAQ,6BACR7B,SAAS,eAdX,+BAmBJ,eAAC0a,GAAA,EAAD,CACE1Y,OAAK,EADP,UAIGmY,EAAgBF,MAAM7a,KAAI,SAACgb,EAAWO,GACrC,OACE,gCACE,cAACD,GAAA,EAAUE,MAAX,CACEtf,OAAQwe,IAAgBa,EACxB3nB,QAAS,kBAAMknB,EAAeS,IAFhC,SAIE,qBAAIjnB,UAAU,gCAAd,UACE,gCACE,cAACF,EAAA,EAAD,CACEC,KAAMqmB,IAAgBa,EAAY,aAAe,iBAElDP,EAAK3mB,QAER,sBAAKC,UAAU,UAAf,iBACG0mB,QADH,IACGA,OADH,EACGA,EAAMC,iBAAiBxkB,OAD1B,mBAKJ,cAAC6kB,GAAA,EAAUxZ,QAAX,CACE5F,OAAQwe,IAAgBa,EAD1B,SAGE,qBAAKjnB,UAAU,UAAf,gBAEG0mB,QAFH,IAEGA,OAFH,EAEGA,EAAMC,iBAAiBjb,KAAI,SAACjM,EAAeqmB,GAC1C,OAAO,cAACD,GAAD,CAELpmB,SAAUA,EACVqmB,cAAeA,EACfC,SAAUW,EAAK3mB,MAJV,2BACoB+lB,aAxBnC,eAAkBmB,OAoCtB,cAACD,GAAA,EAAUE,MAAX,CACEtf,OAAQwe,IAAgBE,EACxBhnB,QAAS,kBAAMknB,EAAeF,IAFhC,SAIE,qBAAItmB,UAAU,gCAAd,UACE,gCACE,cAACF,EAAA,EAAD,CACEC,KAAMqmB,IAAgBE,EAAyB,aAAe,iBAFlE,wBAMA,sBAAKtmB,UAAU,UAAf,iBACG6mB,QADH,IACGA,GADH,UACGA,EAAmB7kB,eADtB,aACG,EAA4BG,OAD/B,mBAKJ,cAAC6kB,GAAA,EAAUxZ,QAAX,CACE5F,OAAQwe,IAAgBE,EAD1B,SAGE,sBAAKtmB,UAAU,UAAf,UACE,mBAAGA,UAAU,mBAAb,wDACA,cAAC6lB,GAAD,CACEpmB,SAAUonB,EACVf,cAAeQ,EACfP,SAAU,8BAWxB,sHAYAoB,GAAkB,SAAChB,GACvB,IAAIiB,EAAc,EAOlB,OANAjB,EAASI,MAAM7a,KAAI,SAACgb,EAAW1hB,GAAmB,IAAD,EAC/C,OAAOmhB,EAASI,MAAMvhB,GAAO2hB,iBAAtB,OAAyCD,QAAzC,IAAyCA,GAAzC,UAAyCA,EAAMC,wBAA/C,aAAyC,EAAwB9F,QAAO,SAAC+F,GAAY,IAAD,EAEzF,OADAQ,GAAeC,OAAOC,SAAP,OAAgBV,QAAhB,IAAgBA,GAAhB,UAAgBA,EAAG5kB,eAAnB,aAAgB,EAAYG,SAAW,EAC/CykB,EAAE5kB,QAAQG,aAGdilB,GAmPMG,GAhPI1Z,aAAS,SAACpE,GAAgB,IAAD,kBACOlD,IAAzCF,EADkC,EAClCA,UAAWC,EADuB,EACvBA,eAAgBH,EADO,EACPA,UADO,EAEVmL,qBAFU,mBAEnC6U,EAFmC,KAEzBqB,EAFyB,OAGVlW,mBAAc,CAAChL,EAAeyW,gBAHpB,mBAGnC0K,EAHmC,KAGzBhD,EAHyB,OAIZnT,oBAAS,GAJG,mBAInCsD,EAJmC,KAI1BoQ,EAJ0B,OAKV1T,mBAAShL,EAAe0W,eALd,mBAKnC7Y,EALmC,KAKzB8Y,EALyB,OAMR3L,mBAAShL,EAAe4W,gBANhB,mBAMnCC,EANmC,KAMxBC,EANwB,OAOI9L,mBAAS,GAPb,mBAOnCqT,EAPmC,KAOlBD,EAPkB,OAQQpT,oBAAS,GARjB,mBAQnCoW,EARmC,KAQhBC,EARgB,OAUVrW,mBAASmW,EAAS,IAVR,mBAUnCxmB,EAVmC,KAUzB2mB,GAVyB,KAYtC1f,GAAS7B,EAAUyB,aAGvB4V,qBAAU,WAERle,OAAOme,iBAAiB,WAAW,WACjCV,EAAY3W,EAAe0W,eAC3BI,EAAa9W,EAAe4W,mBAIf,UAAXhV,KACF8c,GAAW,GAEX/c,EAAmB5B,EAAUyB,aAAc3B,GACxCwC,MAAK,SAAAwK,GACJqU,EAAYrU,MAEhBhK,EAAiBhD,GACdwC,MAAK,SAAA6b,GAEJA,EAAMliB,KAAK,CACThC,SAAU,KACVP,KAAM,WACNmB,eAAgB,CACdC,MAAM,EACNC,gBAAgB,EAChBC,YAAa,IACbC,UAAWC,IAAO,IAAIC,MAAQC,QAAQ,OAAOG,OAC7CC,QAASN,IAAO,IAAIC,MAAQM,MAAM,OAAOF,OACzCG,WAAY,UAEdC,QAAS,KAEPwiB,IAAc,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOriB,QAAS,IAM3BsiB,EAAYD,GACZle,EAAeshB,YAAYpD,EAAMG,IAEjCiD,GAAYthB,EAAeyW,mBAGjCiI,GAAW,MAEZ,CACDL,EACAre,EACAD,EACAF,EACA+B,KAGF,IAAM2f,GAAkCvhB,EAAerE,qCACvD,OACE,eAAC+R,GAAA,EAAD,CACExM,UAAuB,IAAbrD,EACVnE,UAAU,kBAFZ,UAIG4U,GACC,cAAC,GAAD,CACEwH,QAAQ,UACRC,QAAQ,iBACRvL,KAAK,eACL8D,SAAS,KAGJ,OAARuR,QAAQ,IAARA,OAAA,EAAAA,EAAUpmB,QAAV,OAAkBomB,QAAlB,IAAkBA,GAAlB,UAAkBA,EAAUI,aAA5B,aAAkB,EAAiBpkB,QAClC,qCACE,cAAC4gB,GAAA,EAAD,UACE,eAACA,GAAA,EAAKE,OAAN,CAEE5b,MAAO,GAFT,UAIE,qBAAIrH,UAAU,sCAAd,UACE,cAACoO,EAAA,EAAD,CACE0C,KAAK,OACLgX,QAAM,EACN9nB,UAAU,OAHZ,SAKE,eAACoO,EAAA,EAASnP,KAAV,WACE,cAACmP,EAAA,EAASlP,KAAV,CACEgP,KAAM,eAA6B,IAAb/J,EAAoB,cAAgB,cAC1D2M,MAAmB,IAAb3M,EAAoB,MAAQ,OAClC7E,QAAS,kBAAMgH,EAAeyhB,oBAEhC,cAAC3Z,EAAA,EAASlP,KAAV,CACEgP,KAAM,2BAA0C,IAAdiP,EAAqB,MAAQ,MAC/DrM,KAAK,UACLxR,QAAS,kBAAMgH,EAAe0hB,0BAftC,wBAoBiB7B,QApBjB,IAoBiBA,OApBjB,EAoBiBA,EAAUpmB,MAChB,OAARkB,QAAQ,IAARA,GAAA,UAAAA,EAAUe,eAAV,eAAmBG,QAAS,GAC3B,cAACiO,EAAA,EAAD,CAEE9D,SAAS,gBACTuC,QACE,eAAC4G,GAAA,EAAD,CACEzV,UAAU,OACVyH,MAAM,OAFR,iBAIGxG,QAJH,IAIGA,GAJH,UAIGA,EAAUe,eAJb,aAIG,EAAmBG,OAJtB,KAIuC,OAARlB,QAAQ,IAARA,GAAA,UAAAA,EAAUe,eAAV,eAAmBG,QAAS,EAAI,UAAY,SAJ3E,eAOFgM,QAAQ,2EAXV,gCAeJ,qBAAKnO,UAAU,OAAf,SACE,cAAC,GAAD,CACE0kB,mBAAoBA,EACpBC,gBAAiBA,EACjBH,MAAOiD,EACPhD,YAAaA,OAGR,OAARxjB,QAAQ,IAARA,GAAA,UAAAA,EAAUe,eAAV,eAAmBG,QAAS,EAE3B,qCACE,cAAC,GAAD,CACElB,SAAUA,IAEZ,cAAC8hB,GAAA,EAAD,CAAM/iB,UAAU,MAAhB,UACgD,KAArC,OAARiB,QAAQ,IAARA,GAAA,UAAAA,EAAUC,sBAAV,eAA0BE,gBAA1B,OAGCH,QAHD,IAGCA,GAHD,UAGCA,EAAUe,eAHX,aAGC,EAAmB0J,KAAI,SAAC9I,EAAaK,GAAyB,IAAD,EAC3D,OACE,cAAC8f,GAAA,EAAKE,OAAN,CAEE5b,MAAOse,GAAiB,OAAC1kB,QAAD,IAACA,GAAD,UAACA,EAAUC,sBAAX,aAAC,EAA0Ba,YAFrD,SAIE,cAAC,GAAD,CAEEa,OAAQA,GAFV,8BACuBA,QADvB,IACuBA,OADvB,EACuBA,EAAQO,UAD/B,YAC4CF,KAL9C,+BACwBL,QADxB,IACwBA,OADxB,EACwBA,EAAQO,UADhC,YAC6CF,OANlD,UAuBCglB,OAAOC,KAAKL,WAvBb,aAuBC,EAA8Cnc,KAAI,SAAC7I,EAAyBojB,GAA2B,IAAD,EACpG,OACE,cAAClD,GAAA,EAAKE,OAAN,CAEE5b,MAAOse,GAAiB,OAAC1kB,QAAD,IAACA,GAAD,UAACA,EAAUC,sBAAX,aAAC,EAA0Ba,YAFrD,SAIE,cAAC,GAAD,CAEEC,QAAS6lB,GAAgChlB,GACzCA,gBAAiBA,GAHnB,wBACwBA,EADxB,YAC2CojB,KAL7C,yBACyBpjB,EADzB,YAC4CojB,YAetD,eAACpV,GAAA,EAAD,CAAS7Q,UAAU,MAAnB,UACE,cAACF,EAAA,EAAD,CACEC,KAAK,cACL8D,KAAK,UAHT,oFAME,cAAC/D,EAAA,EAAD,CACEC,KAAK,cACLC,UAAU,cAzGlB,oBAgHF,cAACoQ,EAAA,EAAD,CAEEvB,QACE,eAAC0D,GAAA,EAAD,CACEvS,UAAW,yDAA2D0nB,EAAoB,4BAA8B,IACxHpoB,QAAS,kBA/LQqoB,GAAqB,SAAA5jB,GAAK,OAAKA,MAgMhD0D,MAAM,QAHR,UAKE,cAAC3H,EAAA,EAAD,CACEC,KAAO2nB,EAAqC,gBAAjB,eAC3B7J,QAAM,EACNpW,MAAM,SAER,sBAAMzH,UAAU,YAAhB,gCACmBmnB,GAAgBhB,GADnC,UAKJhY,QAAQ,6CACR7B,SAAS,eAnBX,yBAsBCob,GACC,cAAC,GAAD,CACEvB,SAAUA,EACVllB,SAAUA,OAKhB,qBAAKjB,UAAU,OAAf,SACE,cAAC,GAAD,CACEoc,QAAO,uBAAW+J,QAAX,IAAWA,OAAX,EAAWA,EAAUpmB,KAArB,oBACPsc,QAAQ,kIACRvL,KAAK,cACLwL,UAAU,iB,kGCjgBhB6L,GAAY,CAChBC,MAAO,UACPC,KAAM,UACNC,OAAQ,UACRC,IAAK,UACLC,KAAM,UACNC,OAAQ,UACRC,QAAS,UACTC,OAAQ,UACRC,KAAM,UACNC,OAAQ,UACRC,YAAa,UACbC,WAAY,UACZC,SAAU,UACVC,SAAU,UACVC,KAAM,UACNC,KAAM,QAGFC,GAAW,SAAC1lB,EAAoB2lB,GACpC,IAAI5hB,EAAgB,UACpB,OAAQ/D,GACN,KAAK4G,GACH7C,EAAQ,UAER,MACF,KAAK4C,GACH5C,EAAQ,UAER,MACF,KAAK2C,GACH3C,EAAQ,OAER,MACF,KAAK8C,GACH9C,EAAQ,UAIZ,OAAOA,GAGH6hB,GAAsB,SAAC1d,GAC3B,OAAQA,GACN,QACE,OAAOuc,GAAUgB,KACnB,KAAK,EACH,MAAO,UACT,KAAK,EACH,OAAOhB,GAAUG,OACnB,KAAK,EACH,OAAOH,GAAUI,MAYRJ,MCoCFoB,GAAb,oDACE,aAAe,uCACP,CACJC,SAAU,CACRC,OAAQ,CAAE1lB,MAAO,GACjB2lB,OAAQ,CAAE3lB,MAAO,IACjB4lB,OAAQ,CAAE5lB,MAAO,IACjB6lB,OAAQ,CAAE7lB,MAAO,IACjB8lB,SAAU,CAAE9lB,MAAO,IAEnB+lB,iBAAkB,CAAE/lB,MAAO,GAE3BgmB,QAAS,CAAEhmB,OAAO,GAElBimB,eAAgB,CAAEjmB,OAAQ,GAC1BkmB,eAAgB,CAAElmB,OAAQ,GAC1BmmB,eAAgB,CAAEnmB,OAAQ,GAC1BomB,eAAgB,CAAEpmB,OAAQ,IAE5BqmB,aAAa,EAEbC,aAvHY,2NAwHZC,eA7Gc,+vFAuFpB,wCA0BE,WACE,OAAO3pB,KAAK6oB,SAASC,OAAO1lB,OA3BhC,IA8BE,SAAWwhB,GACT5kB,KAAK6oB,SAASC,OAAO1lB,MAAQwhB,IA/BjC,kBAkCE,WACE,OAAO5kB,KAAK6oB,SAASE,OAAO3lB,OAnChC,IAsCE,SAAWwhB,GACT5kB,KAAK6oB,SAASE,OAAO3lB,MAAQwhB,IAvCjC,kBA0CE,WACE,OAAO5kB,KAAK6oB,SAASG,OAAO5lB,OA3ChC,IA8CE,SAAWwhB,GACT5kB,KAAK6oB,SAASG,OAAO5lB,MAAQwhB,IA/CjC,kBAkDE,WACE,OAAO5kB,KAAK6oB,SAASI,OAAO7lB,OAnDhC,IAsDE,SAAWwhB,GACT5kB,KAAK6oB,SAASI,OAAO7lB,MAAQwhB,IAvDjC,0BA0DE,WACE,OAAO5kB,KAAK6oB,SAASQ,eAAejmB,OA3DxC,IA8DE,SAAmBwhB,GACjB5kB,KAAK6oB,SAASQ,eAAejmB,MAAQwhB,IA/DzC,0BAkEE,WACE,OAAO5kB,KAAK6oB,SAASS,eAAelmB,OAnExC,IAsEE,SAAmBwhB,GACjB5kB,KAAK6oB,SAASS,eAAelmB,MAAQwhB,IAvEzC,0BA0EE,WACE,OAAO5kB,KAAK6oB,SAASU,eAAenmB,OA3ExC,IA8EE,SAAmBwhB,GACjB5kB,KAAK6oB,SAASU,eAAenmB,MAAQwhB,IA/EzC,0BAkFE,WACE,OAAO5kB,KAAK6oB,SAASW,eAAepmB,OAnFxC,IAsFE,SAAmBwhB,GACjB5kB,KAAK6oB,SAASW,eAAepmB,MAAQwhB,IAvFzC,mBAyFE,WACE,OAAO5kB,KAAK6oB,SAASO,QAAQhmB,OA1FjC,IA6FE,SAAYwhB,GACV5kB,KAAK6oB,SAASO,QAAQhmB,MAAQwhB,IA9FlC,4BAiGE,WACE,OAAO5kB,KAAK6oB,SAASM,iBAAiB/lB,OAlG1C,IAqGE,SAAqBwhB,GACnB5kB,KAAK6oB,SAASM,iBAAiB/lB,MAAQwhB,MAtG3C,GAAwCgF,mBAkHxCC,aAAO,CAAEjB,wBCjMT,IAAMkB,GAAkB,SAAC,GAAgC,IAA9BhjB,EAA6B,EAA7BA,MACnBijB,EAAQC,mBACNC,EAAUC,aAAQ,uBAAlBD,MAER,OACE,uBAAOE,IAAKJ,EAAOK,QAAS,KAAMC,MAAO,IAAzC,SACE,sBAAMC,SAAUL,EAAMM,MAAMD,SAAUE,SAAUP,EAAMM,MAAMC,SAAU7e,SAAU,CAAC,GAAI,KAAM,GAA3F,SACE,sCAAsB7E,MAAOA,EAAO2jB,kBAAmB,SAiBzDC,GAAsB,SAAC5hB,GAC3B,IAAMihB,EAAQC,mBACNC,EAAUC,aAAQ,6BAAlBD,MAER,OACE,uBAAOE,IAAKJ,EAAOK,QAAS,KAAMze,SAAU,CAAC,GAAI,GAAI,GAAI0e,MAAO,IAAhE,SACE,sBAAMC,SAAUL,EAAMU,SAASL,SAAUE,SAAUP,EAAMU,SAASH,SAAU7e,SAAU,CAAC,GAAI,IAAK,GAAhG,SACE,sCAAsB7E,MAAOgC,EAAMhC,MAAO2jB,kBAAmB,SAiHrEP,KAAQU,QAAQ,wCAChBV,KAAQU,QAAQ,6BAChBV,KAAQU,QAAQ,uBAEDC,OA9FF,SAAC,GAA6B,IAA3BC,EAA0B,EAA1BA,SACRf,EAAQC,mBACNC,EAAUC,aAAQ,wCAAlBD,MAEFc,EAAaC,aAAUpB,iBAAqB,eAClDmB,EAAWE,MAAQF,EAAWG,MAAQtB,kBACtCmB,EAAWI,OAAOC,IAAI,GAAI,IANc,MAQtBza,mBAAS0a,KAAK7D,GAAUC,QAAnC6D,EARiC,sBASjB3a,mBAAS0a,KAAK7D,GAAUG,SAAxC4D,EATiC,sBAUhB5a,mBAAS0a,KAAK7D,GAAUI,MAAzC4D,EAViC,sBAWhB7a,mBAAS0a,KAAK7D,GAAUgB,OAAzCiD,EAXiC,sBAaI9a,oBAAU,GAbd,mBAajC0Y,EAbiC,KAajBqC,EAbiB,OAcI/a,oBAAU,GAdd,mBAcjC2Y,EAdiC,KAcjBqC,EAdiB,OAeIhb,oBAAU,GAfd,mBAejC4Y,EAfiC,KAejBqC,EAfiB,OAgBIjb,oBAAU,GAhBd,mBAgBjC6Y,EAhBiC,KAgBjBqC,EAhBiB,OAiBAlb,oBAAU,GAjBV,mBAiBjCmb,EAjBiC,KAiBnBC,EAjBmB,OAkBEpb,oBAAU,GAlBZ,mBAkBjCqb,EAlBiC,KAkBlBC,EAlBkB,KAoBxClP,qBAAU,WACR+N,EAAS9E,iBAAiBvkB,SAAQ,SAACyqB,GACjC,IACIjhB,EAD4C,IAA7BihB,EAAU7qB,QAAQG,QACT,EAAI0qB,EAAUhjB,OAAO+B,MACjD,GAA4B,UAAxBihB,EAAU3G,KAAKja,KAEjB,OADY4gB,EAAU3G,KAAKxK,UAAY,GAErC,KAAK,EACH2Q,EAAkBzgB,GAClB,MACF,KAAK,GACH0gB,EAAkB1gB,GAClB,MACF,KAAK,GACH2gB,EAAkB3gB,GAClB,MACF,KAAK,GACH4gB,EAAkB5gB,QAIbihB,EAAU3G,KAAKja,OAAStB,GACjC+hB,EAAgB9gB,GACPihB,EAAU3G,KAAKja,OAASvB,IACjCkiB,EAAiBhhB,QAGpB,CAAC6f,EAAUQ,EAASC,EAAcC,EAAeC,IAEpD,IAAMhD,EAAW,SAACzd,GAAD,OACF,IAAbA,EAAiBsgB,EAAuB,IAAbtgB,EAAiBugB,EAA4B,IAAbvgB,EAAiBwgB,EAAgBC,GAC1FU,EAAY1D,EAASqD,GACrBM,EAAa3D,EAASuD,GAE1B,OACE,wBAAO7B,IAAKJ,EAAOK,QAAS,KAAMiC,eAAa,EAACC,YAAU,EAACjC,MAAO,MAAQ1e,SAAU,CAAC,EAAG,EAAG,GAA3F,UACE,sBACE2e,SAAUL,EAAMY,KAAKP,SACrB3e,SAAU,CAAC,GAAI,KAAM,GACrB4gB,SAAU,CAACtQ,KAAKuQ,GAAK,EAAG,EAAG,GAC3BH,eAAa,EACbhC,MAAO,CAAC,EAAG,EAAG,KALhB,SAQE,oCACEhB,eAAgBA,EAChBC,eAAgBA,EAChBC,eAAgBA,EAChBC,eAAgBA,EAChBL,iBAAkB,OAGtB,sBACEmB,SAAUL,EAAMwC,QAAQnC,SACxBE,SAAUP,EAAMwC,QAAQjC,SACxB7e,SAAU,CAAC,EAAG,IAAK,GACnB4gB,SAAU,CAACtQ,KAAKuQ,GAAK,EAAG,EAAG,GAC3BH,eAAa,EALf,SAOE,sCAAsBvlB,MAAO,WAE/B,sBAAMwjB,SAAUL,EAAMyC,KAAKpC,SAAU3e,SAAU,CAAC,EAAG,IAAK,GAAI4gB,SAAU,CAACtQ,KAAKuQ,GAAK,EAAG,EAAG,GAAvF,SACE,sCAAsB/C,aAAW,EAACkD,QAAS,EAAK7lB,MAAO,UAAW8lB,SAAU7B,MAE9E,cAAC,GAAD,CAAiBjkB,MAAO,CAACqlB,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC/D,cAAC,GAAD,CAAqBrlB,MAAO,CAACslB,EAAW,GAAIA,EAAW,GAAIA,EAAW,U,UC9J/DS,GAAb,oDACE,aAAe,uCACP,CACJhE,SAAU,CACRiE,WAAY,CAAE1pB,MAAO,CAAC,EAAK,EAAK,EAAK,IACrC2pB,YAAa,CAAE3pB,WAAO2B,IAExB2kB,aAAa,uVAUbC,eAAe,mRAjBrB,UAAmCC,mBAwCnCC,aAAO,CAAEgD,mBCjCThD,aAAO,CAAEmD,aAET,IAmEeC,GAnEmB,SAACnkB,GACjC,IAAMokB,EAAelC,aAAUpB,iBAAqB,sBAG9CO,EAAMH,iBAA6B,MAUzC,OARAkD,EAAajC,MAAQiC,EAAahC,MAAQtB,kBAC1CsD,EAAa/B,OAAOC,IAAI,GAAI,IAK5B+B,cAAS,SAAC5c,EAAO6c,GAAR,yBAAkBjD,EAAI/e,eAAtB,iBAAkB,EAAaiiB,iBAA/B,aAAkB,EAAwBC,OAAOlC,IAAI,EAAGjB,EAAI/e,QAAQiiB,UAAUC,OAAOzhB,EAAY,IAARuhB,MAOhG,cAJA,CAIA,oCAAUtkB,GAAV,IAAiBujB,eAAa,EAACkB,YAAa,IAA5C,UACE,qCAAqBC,OAAO,WAAWC,KAAM,CAAC,EAAG,KACjD,sCACEtD,IAAKA,EACLrjB,MAAO,UACP2iB,aAAW,EACXkD,QAAS,GACTU,UAAWH,EACXQ,aAAc,GACdC,UAAW,EACXC,KAAMhE,cACNiE,YAAY,S,6BCNdC,GAAkB,SAACC,GACvB,OAAO,IAAIltB,KAAe,IAAVktB,GAAgBhS,eAAe,UAG3CiS,GAA6B,SAACC,EAAsBjU,GACxD,IAAIkU,EAAgCD,EAAS/N,QAAO,SAACiO,GAAD,OAAQA,EAAGzsB,mBAAqBsY,KACpF,OAAOoU,GAA4BF,EAAmBlU,IAGlDqU,GAAY,SAACC,EAAaC,EAAavU,GAC3C,IACIwU,EAAkB,IADFD,EAAMD,GAE1B,OAAQtU,GACN,KAAK1P,GAEL,KAAKL,GAEL,KAAKC,GACH,MAAO,CAACokB,EAAME,EAASD,EAAMC,GAC/B,KAAKrkB,GACH,MAAO,CAACmkB,EAAME,EAAU,EAAIF,EAAME,GAAW,EAAGD,EAAMC,GAE1D,MAAO,CAACF,EAAKC,IAGTH,GAA8B,SAACH,EAAsBQ,GACzD,IAAKR,GAAgC,IAApBA,EAASzsB,OACxB,MAAO,CAAC,UAAW,WAErB,IAAI8sB,EAAcI,IACdH,GAAeG,IAanB,OAZAT,EAASxsB,SAAQ,SAAC0sB,GAChB,IAAMQ,EAASR,EAAG5lB,KAAKwC,KAAI,SAAC3H,GAAD,OAAyBA,EAAMA,SACtDwrB,EAAgB3S,KAAKqS,IAAL,MAAArS,KAAI,aAAQ0S,IAC5BE,EAAgB5S,KAAKsS,IAAL,MAAAtS,KAAI,aAAQ0S,IAC5BC,EAAQN,IACVA,EAAMM,GAEJC,EAAQN,IACVA,EAAMM,MAIHR,GAAUC,EAAKC,EAAKE,IAqBvBK,GAAa,SAACb,EAAsBpnB,GACxC,IAAIkoB,EAAmB,IAAIC,IAE3Bf,EACG/N,QAAO,SAACiO,GAAD,OAAQA,EAAG5lB,KAAK/G,OAAS,KAChCC,SAAQ,SAAC0sB,GAGA,IAAD,EAFFY,EAAiBE,IAAId,EAAGzsB,kBAG3B,UAAAqtB,EAAiB5lB,IAAIglB,EAAGzsB,yBAAxB,SAA2CC,KAAKwsB,GAFhDY,EAAiB3D,IAAI+C,EAAGzsB,iBAAkB,CAACysB,OAKjD,IAAIe,EAA2B,GAC3BtQ,EAAamQ,EAAiB7rB,KAAO,EAAI,GAAK,GAgBlD,OAfA6rB,EAAiBttB,SAAQ,SAAC0tB,EAAuB5rB,GAC/C,IAAMorB,EAASQ,EAAUvkB,SAAQ,SAACwkB,GAAD,OAAOA,EAAE7mB,QAAMwC,KAAI,SAACkI,GAAD,OAAOA,EAAE7P,SACvDmrB,EAAMtS,KAAKsS,IAAL,MAAAtS,KAAI,aAAQ0S,IAElBU,EApCa,SAACf,EAAaC,EAAazP,EAAkB9E,GAClE,IAAMwU,EAAUH,GAAUC,EAAKC,EAAKvU,GAC9BsV,EAASd,EAAQ,GACjBe,EAASf,EAAQ,GACjBa,EAAQ,GACRG,GAAQD,EAASD,IAAWxQ,EAAW,GAC7C,GAAa,IAAT0Q,EAGF,OAFAH,EAAM1tB,KAAK2tB,GACXD,EAAM1tB,KAAK4tB,GACJF,EAET,IAAK,IAAI9b,EAAI+b,EAAQ/b,GAAKgc,EAAQhc,GAAQic,EACxCH,EAAM1tB,KAAK4R,GAGb,OAAO8b,EAqBSI,CADFxT,KAAKqS,IAAL,MAAArS,KAAI,aAAQ0S,IACUJ,EAAK,EAAGhrB,GAC1C2rB,EAAWvtB,KAAK,CACdqY,YAAazW,EACbsb,OAAQmP,GAA2BC,EAAU1qB,GAC7CmsB,YAAY,EACZvd,MAAOsH,KAAEC,WAAmB,UAARnW,EAAkB,OAASA,GAC/Cqb,GAAIA,EACJ/X,SAAUA,EACVwoB,MAAOA,OAIT,mCACGH,EACEhP,QAAO,SAACpX,GAAD,OAAWA,EAAMkR,eACxBjP,KAAI,SAACjC,GACJ,OACE,cAACiW,GAAA,EAAD,CAEED,SAAS,mBACT6Q,QAAS7mB,EAAMkR,YACf4V,eAAe,EACfP,MAAOvmB,EAAMumB,MACb5Q,cAAe,SAACoR,GAAD,OAAUA,EAAKxQ,QAAQ,IACtCyQ,SAAgC,UAAtBhnB,EAAMkR,YAChB6E,OAAQ/V,EAAM+V,OAAS/V,EAAM+V,YAAS9Z,EACtCoN,MACE,cAAC,KAAD,CACE9S,UAAU,cACV+D,MAAO0F,EAAMqJ,MACbuM,OAAQ,GAERqR,KAAMlpB,EAAW,QAAU,QAC3B+X,GAAI9V,EAAM8V,GAEV7X,MAAO,CAAEwI,SAAU,WAjBlBzG,EAAMkR,mBAkJVgW,GAvHO9iB,aAAS,YAAgE,IAA7D+gB,EAA4D,EAA5DA,SAAUgC,EAAkD,EAAlDA,UAAWrR,EAAuC,EAAvCA,GAAI/X,EAAmC,EAAnCA,SAGzD,OAAwB,IAApBonB,EAASzsB,OACJ,6BAGP,mCAII,cAAC4b,GAAA,EAAD,CACEE,SAAU,QACVD,UAAW,QACXE,SAAU,IAHZ,SAKE,eAACC,GAAA,EAAD,CACEjV,KAAM0lB,EACNiC,WAAW,QAFb,UA2BE,cAACrS,GAAA,EAAD,CAAeC,OAAO,SACrBmQ,EAASljB,KAAI,SAACojB,EAAI9pB,GACjB,IAAIjF,GACD+uB,EAAGgC,WAAahC,EAAGgC,WAAalW,GAAckU,EAAG1rB,YAAa0rB,EAAG3rB,UAAW2rB,EAAGgC,aAChF,OACyB,UAAxBhC,EAAGzsB,iBAA+B,OAASysB,EAAGzsB,kBACjD,OACE,qCACE,cAACsc,GAAA,EAAD,CAEE2R,QAASxB,EAAGzsB,iBACZtC,KAAMA,EACN8e,QAAQ,OACR5S,KAAK,OACL/C,KAAM4lB,EAAG5lB,KACT0V,QAAS,QACTE,KAAK,EACLC,UAAW,CACTN,OAAQ,OACRO,YAAa,EAAG7L,EAAG,IAErB8L,KAAMjD,GAAQ8S,EAAGzsB,kBACjBoc,OAAQqQ,EAAGrnB,MACXyX,mBAAmB,GAddnf,EAAO+uB,EAAGzsB,kBAgBI,IAApBusB,EAASzsB,OACR,cAAC4uB,GAAA,EAAD,CACE/N,cAAc,MACdgO,MAAM,QACNC,OAAO,SACP9iB,QAAS,kBACP,qBACEzG,MAAOF,EAAW,CAAEC,MAAO,QAASyI,SAAU,QAAW,CAAEzI,MAAO,QAASyI,SAAU,QADvF,SAGG4e,EAAG5lB,KAAK/G,OAAS,EAAI2sB,EAAG5lB,KAAK4lB,EAAG5lB,KAAK/G,OAAS,GAAG4B,MAAMic,QAAQ,GAAK,QAIzE,WAIT4O,EAAWa,GAAWb,EAAUpnB,GAAY,KAC5ConB,GAAYA,EAASrjB,SAAQ,SAACujB,GAAD,OAAQA,EAAG5lB,QAAM/G,OAAS,EACtD,qCACE,cAACgd,GAAA,EAAD,CACEN,QAAS,OACTqS,mBAAiB,EACjBV,MAAOI,EACPhS,QAAQ,KACRS,MAAO,GACPpP,OAAQ2gB,EAAY,EAAI,IACxB3kB,KAAK,SACLuT,OAAQ,CAAC,UAAW,aACpBF,GAAI,GACJC,GAAIA,GAAU,GACdE,SAAS,mBACTL,cAAeqP,GACf0C,yBAAyB,IAE3B,cAACtR,GAAA,EAAD,CACEC,eAAgB2O,GAChB1O,UAAW,SAAChc,EAAYhE,EAAW0J,GACjC,MAAO,CAAC1F,EAAMic,QAAQ,GAAIjgB,IAE5BkgB,aAAc,CAAEC,gBAAiB,gBAGnC,eClRD,OAA0B,sCCuD1BkR,GAzCI,SAAC,GAAmG,IAAjG1tB,EAAgG,EAAhGA,WAAgG,IAApFsnB,aAAoF,MAA5E,GAA4E,MAAvEkC,gBAAuE,MAA5D,GAA4D,MAAxDvlB,WAAwD,MAAlD,MAAkD,MAA3C0pB,kBAA2C,MAA9B,OAA8B,IACtF/f,oBAAS,GAD6E,mBAC7GhK,EAD6G,KACpGgqB,EADoG,KAGpH,OAAO5tB,EACL,sBACEpE,QAAS,kBAAMgyB,GAAYhqB,IAC3BI,MAAO,CACL6pB,OAAQ,EACRlqB,MAAO,EACPgqB,WAAYA,EACZphB,OAAQ,EACRtI,IAAKA,EACL6pB,OAAQ,OACRC,UAAU,SAAD,OAAWzG,EAAX,oBAA4BkC,EAA5B,SATb,UAYE,cAAC3c,EAAA,EAAD,CACEC,IAAKkhB,GACLhqB,MAAO,CAAEL,MAAO,OAAQiF,SAAU,WAAY3E,IAAK,QAAS2W,KAAM,QAASqT,SAAU,UAGvF,qBACEtqB,MAAM,OACN4I,OAAO,OACPvI,MAAO,CAAE4E,SAAU,WAAY3E,IAAK,MAAO2W,KAAM,SAHnD,SAKE,sBAEEjX,MAAM,OACN4I,OAAO,OACPygB,KAAMtH,GAAS1lB,GACfkuB,GAAG,IAEHrlB,EAAG,EACHC,EAAG,SAIP,MCiDAqlB,GAAsB,SAACC,EAA4BjrB,EAA0BiH,GACjF,IAAIikB,EAAkBtW,GAAeqW,EAAIE,gBAAgB9L,MACrD+L,EAAwBrW,GAAiBkW,EAAIE,gBAAgB9L,MAAMpT,MAEvEgf,EAAII,oBAAoB5Y,MAAK,SAAClR,EAAamR,GACzC,OAAInR,EAAEjF,YAAcoW,EAAEpW,UAChBiF,EAAEhF,cAAgBmW,EAAEnW,YACfgF,EAAE/F,iBAAmBkX,EAAElX,iBAAmB,GAAK,EAE/C+F,EAAEhF,YAAcmW,EAAEnW,YAAc,GAAK,EAGvCgF,EAAEjF,UAAYoW,EAAEpW,UAAY,GAAK,KAI5C2uB,EAAII,oBAAoB9vB,SAAQ,SAAC0sB,GAC/BA,EAAGrnB,MAAQ2hB,GAAS0F,EAAG1rB,gBAEzB,IAAI+uB,EAtCqC,SAACC,GAC1C,IAAID,EAAkC,GAetC,OAdAC,EAAmBhwB,SAAQ,SAAC0sB,GAC1B,IAAIlsB,EAAoCuvB,EAAexjB,MACrD,SAAC0jB,GAAD,OAAuBA,EAAGlvB,YAAc2rB,EAAG3rB,WAAakvB,EAAGjvB,cAAgB0rB,EAAG1rB,eAE5ER,EACFA,EAAOktB,UAAUxtB,KAAKwsB,GAEtBqD,EAAe7vB,KAAK,CAClBa,UAAW2rB,EAAG3rB,UACdC,YAAa0rB,EAAG1rB,YAChB0sB,UAAW,CAAChB,QAIXqD,EAsB+BG,CAAmCR,EAAII,qBACvEK,EAAsB,GAuB5B,OArBAA,EAAoBjwB,KAApB,MAAAiwB,EAAmB,aAASJ,EAAezmB,KAAI,SAAC2mB,GAC9C,IAAIzvB,EAAqCkvB,EAAIE,gBAAgBhwB,QAAQ2M,MACnE,SAAC/L,GAAD,OAAYA,EAAOO,YAAckvB,EAAGlvB,WAAaP,EAAOQ,cAAgBivB,EAAGjvB,eAM7E,OArG2B,SAC7BovB,EACA1B,EACAiB,EACAE,EACAI,EACAI,EACAC,EACA7rB,EACAiH,GAEA,IAAI6kB,EAAoB/X,GAAcyX,EAAGjvB,YAAaivB,EAAGlvB,UAAW2tB,GAEpE,OACE,cAAC,WAAD,UACE,cAACjY,GAAA,EAAD,CAAOrR,UAAQ,EAACC,MAAM,OAAOC,MAAO,CAAEkrB,cAAe,QAArD,SACE,eAAC/Z,GAAA,EAAMe,KAAP,WACE,eAACf,GAAA,EAAMC,IAAP,WACE,eAACD,GAAA,EAAME,KAAP,CAAYrR,MAAO,CAAEkO,WAAY,QAAjC,UACE,cAAC,GAAD,CAAYlS,WAAY2uB,EAAGjvB,cAC3B,sBAAKsE,MAAO,CAAE2pB,WAAY,QAA1B,UACGsB,EADH,MACyBZ,EACtB,MACAE,QAGL,cAACpZ,GAAA,EAAME,KAAP,CAAYrR,MAAO,CAAEkO,WAAY,QAAUrH,UAAU,QAArD,SACE,eAACgE,GAAA,EAAD,CACEzB,MAAI,EACJtJ,UAAQ,EACRqrB,OAAK,EACLhvB,KAAK,OACL6D,MAAO,CAAE2pB,WAAY,QACrB/xB,QAAS,WACPuH,GAAoB,GACpBiH,EAAQxL,KAAK,cAAgBkwB,IARjC,UAWE,cAAC1yB,EAAA,EAAD,CAAMC,KAAK,eAXb,oBAgBHsyB,EAAGvC,UAAUpkB,KAAI,SAACojB,GAAD,OAChB,cAAC,GAAD,CAAoF9I,aAAc,CAAC8I,GAAKgE,QAASL,EAAYC,MAAOA,GAAjH5D,EAAG1rB,YAAc,IAAM0rB,EAAG3rB,UAAY,IAAM2rB,EAAGzsB,2BA9B3DgwB,EAAGjvB,YAAc,IAAMivB,EAAGlvB,WAuFlC4vB,CAJiBnwB,GAAqB,OAAXA,EAAkBA,EAAOtC,SAAW+xB,EAAGjvB,YAAc,IAAMivB,EAAGlvB,UAEvEP,GAAqB,OAAXA,EAAkBA,EAAO7C,KAAO,GAKjEgyB,EACAE,EACAI,EACA,IACA,GACAxrB,EACAiH,QAKF,cAAC,WAAD,UACGykB,GADYT,EAAIE,gBAAgB1xB,WAMjC0yB,GAA6B,SAAC5qB,EAA0BmR,GAC5D,OAAInR,EAAE4pB,gBAAgB9L,KAAKxK,YAAcnC,EAAEyY,gBAAgB9L,KAAKxK,UACvDtT,EAAE4pB,gBAAgB9L,KAAKrK,YAActC,EAAEyY,gBAAgB9L,KAAKrK,YAAc,GAAK,EAE/EzT,EAAE4pB,gBAAgB9L,KAAKxK,UAAYnC,EAAEyY,gBAAgB9L,KAAKxK,UAAY,GAAK,GAIhFuX,GAAgBplB,aAAS,YAAkE,IAA/DqlB,EAA8D,EAA9DA,OAAoBrsB,GAA0C,EAAtD4rB,WAAsD,EAA1C5rB,qBAA0C,EAC7DN,IAAzBF,EADsF,EACtFA,UAAWF,EAD2E,EAC3EA,UACbV,EAA8BY,EAAUyB,aACxCgG,EAAUC,cAH8E,EAIpEuD,mBAAS,IAJ2D,mBAIvFohB,EAJuF,KAIhFS,EAJgF,OAKtEpmB,aACtBtH,GAAWytB,EAAS,gBAAkBztB,EAAU,SAAWytB,EAAS,qBAAuBR,EAAa,MACxG,SAACpqB,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBACpC,CACEuQ,gBAAiB,MAJbrU,EALsF,EAKtFA,KAAMH,EALgF,EAKhFA,MAOd,IAAKG,EACH,OAAO,cAACmE,EAAA,EAAD,CAAQzF,QAAM,EAACJ,UAAQ,IAEhC,GAAIuB,EACF,OAAO,cAAC,WAAD,0DAET,IAAMqqB,EAA8BlqB,EAEpC,QAAYxD,IAAR0tB,EACF,OAAO,mCAAE,cAAC/lB,EAAA,EAAD,CAAQzF,QAAM,EAACJ,UAAQ,MAIlC,IAAM6rB,EAAY,GAClB,GAAID,EAAIE,wBAAyB,CAC/BF,EAAIE,wBAAwBha,KAAK0Z,IAEjC,IAAIO,EAASH,EAAIE,wBAAwB5nB,KAAI,SAAC8nB,GAAD,OAAmC3B,GAAoB2B,EAAQ3sB,EAAqBiH,MACjIulB,EAAU/wB,KAAV,MAAA+wB,EAAS,aAASE,IAGpB,OAAIH,EAAI1M,KAGJ,qCACE,cAAC,KAAD,CAAWnY,UAAU,QAAQ7G,MAAO,CAAE+rB,WAAY,UAAWtE,QAAS,OAAQuE,aAAc,OAA5F,SACE,cAACtlB,EAAA,EAAD,CACE0C,KAAK,QAEL6iB,UAAQ,EACRC,SAAO,EAEPC,QAAM,EACN7zB,UAAU,2BACV0J,QAAS,CACP,CAAExF,IAAK,EAAGgK,KAAM,YAAanK,MAAO,GACpC,CAAEG,IAAK,EAAGgK,KAAM,gBAAiBnK,MAAO,IACxC,CAAEG,IAAK,EAAGgK,KAAM,cAAenK,MAAO,MAExCA,MAAO2uB,EACPhkB,SAAU,SAAC/O,EAAD,GAAmB,IAAboE,EAAY,EAAZA,MACO,kBAAVA,GAAoBovB,EAASpvB,QAI7CsvB,KAOL,mCACE,eAACxiB,GAAA,EAAD,CAASpJ,MAAM,OAAOC,MAAO,CAAEC,IAAK,OAAQyW,OAAQ,UAApD,UACE,cAACte,EAAA,EAAD,CAAMC,KAAK,SADb,mDAYA+zB,GAAe,SAAC,GAAyD,IAAvD9N,EAAsD,EAAtDA,aAAc8M,EAAwC,EAAxCA,QAAwC,EAA/BJ,MAE7C,OACE,cAAC7Z,GAAA,EAAMC,IAAP,CAAW9Y,UAAU,iBAArB,SACE,cAAC6Y,GAAA,EAAME,KAAP,CAAYgb,QAAS,EAArB,SACG/N,EAAata,KAAI,SAACiP,EAAuB3V,GAAxB,OAChB,cAAC,GAAD,CAEE4pB,SAAUjU,EACVmY,QAASA,GAFJnY,EAAYvX,YAAc,IAAMuX,EAAYtY,0BAmBvD2xB,GAAmB,SAAC,GAAkE,IAAhEpF,EAA+D,EAA/DA,SAAUqF,EAAqD,EAArDA,wBACpC,OACE,cAACjgB,GAAA,EAAD,CAEEzF,UAAU,SACV7G,MAAO,CACLwY,gBAAiB,gBACjBjQ,OAAQ,QACRikB,YAAa,GANjB,SASGtF,EACC,cAAC,GAAD,CACEpnB,UAAU,EACV/D,SAAUmrB,EAASzrB,UAAU6N,WAC7B4d,SAAU,CAACA,GACXqF,wBAAyBA,EACzBrD,WAAW,EACXrR,IAAK,KAGP,cAAClS,EAAA,EAAD,CAAQzF,QAAM,EAACJ,UAAQ,KAlBpBonB,EAASxrB,YAAc,IAAMwrB,EAASzrB,YAwBlC8vB,MC9KTkB,GAAY,SAACC,GACjB1W,qBAAU,WACR0W,EAAMC,YAAcD,EAAMC,eACzB,CAACD,IAEJ,IAEI/C,EAAqB,IAAO+C,EAAM9E,OAAO,GAAK,IAC9CgF,EAAsB,IAAM,IAAOF,EAAM9E,OAAO,GAAK,IAEzD,OACE,cAACtI,GAAA,EAAD,CAAWhnB,UAA2B,IAAhBo0B,EAAMxoB,MAAc,MAAwB,IAAhBwoB,EAAMxoB,MAAc,SAAW,OAAjF,SACE,cAACmX,GAAA,EAAD,CAAMrb,MAAO,CAAE2pB,WAAY,GAA3B,SACE,eAACtO,GAAA,EAAKjK,IAAN,CAAUkK,cAAc,SAAStb,MAAO,CAAEuI,OAAQ,OAAQmO,OAAQ,QAAlE,UACE,cAAC2E,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAAGK,MAAO,CAAEqJ,WAAY,UAA5C,SACE,cAACxD,EAAA,EAAD,CAAQpO,GAAI,KAAMqI,UAAQ,EAA1B,SACG4sB,EAAMthB,UAGX,cAACiQ,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAApB,SACE,cAACoO,GAAA,EAAD,CAAO/N,MAAO,CAAE+rB,WAAY,OAAQhsB,MAAO,SAA3C,SAAuD2sB,EAAM9nB,aAE/D,cAACyW,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAAGK,MAAO,CAAEynB,QAAS,OAAzC,SACE,cAAC,GAAD,CAAyBnJ,aAAcoO,EAAMpO,iBAE/C,cAACjD,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAApB,SACE,cAAC,SAAD,CACEioB,OAAQ8E,EAAM9E,OACd5gB,SAAU,aACVugB,KAxBC,EAyBDC,IAxBA,IAyBAiB,KAAM,EACNoE,cAAc,EACdC,YAAa,gBAAG/qB,EAAH,EAAGA,MAAOgF,EAAV,EAAUA,SAAV,OACX,kDACMhF,GADN,IAEE/B,MAAK,6BACA+B,EAAM/B,OADN,IAEHL,MAAO,MACP4I,OAAQ,OAERwjB,WAAW,6EAAD,OAA+EW,EAAMK,QAArF,mCAAuHL,EAAMM,SAA7H,QAPd,UAUGjmB,EAED,iDACMhF,GADN,IAEE/B,MAAK,6BACA+B,EAAM/B,OADN,IAEHitB,QAAS,OACTtD,WAAYA,EACZiD,YAAaA,EACbb,WAAY,OACZxjB,OAAQ,SARZ,SAWE,qBACEvI,MAAO,CACL+rB,WAAY,OACZxjB,OAAQ,MACR5I,MAAO,OACPmH,UAAW,OACXomB,aAAc,kBAMxBC,YAAa,YAA8B,IAA3BprB,EAA0B,EAA1BA,MAAO1F,EAAmB,EAAnBA,MAAOiB,EAAY,EAAZA,MAC5ByE,EAAM/B,MAAM8pB,OAAS,OACrB,IAAIsD,EAA0B,IAAV9vB,EACpB,OACE,iDAASyE,GAAT,IAAgBzJ,UAAU,wBAA1B,SACE,cAAC,GAAD,CAAqB+0B,oBAAqBX,EAAM9E,OAAO,GAAI0F,gBAAiBjxB,EAAO+wB,KAAMA,oBAkBvGG,GAAsB,SAACxrB,GAC3B,OAAIA,EAAMqrB,KACD,cAAC,GAAD,CAAeE,gBAAiBvrB,EAAMurB,gBAAiBD,oBAAqBtrB,EAAMsrB,sBAElF,cAAC,WAAD,KASLG,GAAgB,SAACzrB,GACrB,IAAI0rB,EAAe1rB,EAAMurB,gBAAkBvrB,EAAMsrB,oBACjD,OAAII,EAAO,GAEP,eAAC,KAAD,CAAWn1B,UAAU,OAArB,UACE,cAACF,EAAA,EAAD,CAAM+D,KAAK,MAAM6D,MAAO,CAAE4E,SAAU,WAAY8oB,WAAY,SAAUztB,IAAK,SAAW5H,KAAK,SAASyH,UAAQ,IAC5G,cAAC1H,EAAA,EAAD,CACE+D,KAAK,QACL6D,MAAO,CAAE4E,SAAU,WAAY8oB,WAAY,SAAUztB,IAAK,QAAS2W,KAAM,OACzEve,KAAK,0BAIFo1B,EAAO,EAEd,eAAC,KAAD,CAAWn1B,UAAU,OAArB,UACE,cAACF,EAAA,EAAD,CAAM+D,KAAK,MAAM6D,MAAO,CAAE4E,SAAU,WAAY3E,IAAK,SAAW5H,KAAK,SAAS0H,MAAM,OAAOD,UAAQ,IACnG,cAAC1H,EAAA,EAAD,CACE+D,KAAK,QACL6D,MAAO,CAAE4E,SAAU,WAAY8oB,WAAY,SAAUztB,IAAK,OAAQ2W,KAAM,OACxE7W,MAAM,QACN1H,KAAK,mBAIFo1B,GAAQ,GAEf,eAAC,KAAD,CAAWn1B,UAAU,OAArB,UACE,cAACF,EAAA,EAAD,CAAM+D,KAAK,MAAM6D,MAAO,CAAE4E,SAAU,WAAY3E,IAAK,SAAW5H,KAAK,SAAS0H,MAAM,OAAOD,UAAQ,IACnG,cAAC1H,EAAA,EAAD,CACE+D,KAAK,QACL6D,MAAO,CAAE4E,SAAU,WAAY8oB,WAAY,SAAUztB,IAAK,OAAQ2W,KAAM,OACxE7W,MAAM,QACN1H,KAAK,yBAIFo1B,GAAQ,EAEf,eAAC,KAAD,CAAWn1B,UAAU,OAArB,UACE,cAACF,EAAA,EAAD,CAAM+D,KAAK,MAAM6D,MAAO,CAAE4E,SAAU,WAAY3E,IAAK,SAAW5H,KAAK,SAAS0H,MAAM,OAAOD,UAAQ,IACnG,cAAC1H,EAAA,EAAD,CACE+D,KAAK,QACL6D,MAAO,CAAE4E,SAAU,WAAY8oB,WAAY,SAAUztB,IAAK,OAAQ2W,KAAM,OACxE7W,MAAM,QACN1H,KAAK,kBAOX,eAAC,KAAD,CAAWC,UAAU,OAArB,UACE,cAACF,EAAA,EAAD,CACE+D,KAAK,MACL6D,MAAO,CAAE4E,SAAU,WAAY8oB,WAAY,SAAUztB,IAAK,SAC1D3H,UAAU,eACVyH,MAAM,OACN1H,KAAK,SACLyH,UAAQ,IAEV,cAAC1H,EAAA,EAAD,CACE+D,KAAK,OACL6D,MAAO,CAAE4E,SAAU,WAAY8oB,WAAY,SAAUztB,IAAK,OAAQ2W,KAAM,QACxE7W,MAAM,QACN1H,KAAK,eAMPic,GAAU,SAACnZ,GACf,OAAQA,GACN,QACE,OAAOA,EACT,IAAK,SACH,MAAO,IACT,IAAK,cACH,MAAO,QACT,IAAK,QACH,MAAO,IACT,IAAK,QACH,MAAO,SAIPwyB,GAA0B,SAAC5rB,GAAkC,IAAD,EAEhE,OADA7J,QAAQC,IAAI4J,GAEV,cAACuK,GAAA,EAAQoP,MAAT,CAAekS,YAAU,EAAC9tB,SAAS,OAAOE,MAAO,CAAEitB,QAAS,YAA5D,SACGlrB,EAAMuc,cACLvc,EAAMuc,aAAa7jB,SADpB,UAECsH,EAAMuc,oBAFP,aAEC,EAAoBta,KAAI,SAAC6pB,EAAMvwB,GAC7B,OACE,eAACgP,GAAA,EAAD,CAAqBxM,UAAQ,EAACguB,SAAO,EAAC9tB,MAAO,CAAE+tB,aAAc,MAAOvB,YAAa,OAAjF,UACGqB,EAAK5a,YAAYqF,QAAQ,GACzBhE,GAAQuZ,EAAKtpB,QAFFjH,UAUX0wB,GAxTY,SAAC,GAAkD,IAAhDhP,EAA+C,EAA/CA,KAAM1mB,EAAyC,EAAzCA,UAAyC,EAC/CsR,mBAA2B,IADoB,mBACpEqkB,EADoE,KAC5DC,EAD4D,KAE3ElY,qBAAU,WACR,IAAMiY,EAASjP,EAAKC,iBACjBjb,KAAI,SAACmqB,GACJ,OAAOA,EAAeC,gBAAgBpqB,KAAI,SAACqqB,GACzC,IAAI3B,EAAQyB,EAAeG,UAAUrnB,MAAK,SAACylB,GAAD,OAAWA,EAAM9zB,WAAay1B,EAAez1B,YACnF21B,EAAiBrZ,KAAKC,MAAMuX,EAAQA,EAAMvlB,QAAQqnB,yBAA2B,IAE7E5G,EAAS,CACX2G,EAFoB,IAIpBrZ,KAAKC,MAAMkZ,EAAeI,sBAC1BvZ,KAAKC,MAAMkZ,EAAeK,sBAC1BxZ,KAAKC,MAAMkZ,EAAeM,uBAC1BzZ,KAAKC,MAAMkZ,EAAeO,mBAG5B,MAAO,CACLxjB,MAAOijB,EAAeh2B,KACtBuM,SAAUmP,GAAeoa,EAAe3P,MACxCoJ,OAAQA,EACR1jB,MAAOmqB,EAAepqB,SAASC,MAC/Boa,aAAc+P,EAAe/P,aAC7BuQ,MAAOV,EAAe3P,KAAKxK,UAAY,EACvC8a,WAAYX,EAAev1B,SAC3Bm0B,QAASwB,EACTvB,SAnBoB,IAoBpB+B,YAAaV,EAAeU,YAC5BrC,MAAOA,SAIZsC,OACApd,MAAK,SAAClR,EAAGmR,GACR,OAAInR,EAAEmuB,QAAUhd,EAAEgd,MACZnuB,EAAE0K,QAAUyG,EAAEzG,MACT1K,EAAEknB,OAAO,GAAK/V,EAAE+V,OAAO,IAAM,EAAI,EAEnClnB,EAAE0K,MAAQyG,EAAEzG,MAAQ,GAAK,GAEjB,IAAb1K,EAAEmuB,OAGCnuB,EAAEmuB,MAAQhd,EAAEgd,MAFV,GAEuB,KAGpCX,EAAUD,KACT,CAACjP,IAEJ,IAGM2N,EAAa,WACjB,IAAMsC,EAAiB/U,SAASgV,eAAe,kBAC/C,GAAID,EAAgB,CAClB,IAAM1I,EAAS0I,EAAeE,aAAeF,EAAeG,aAAeH,EAAeI,UACpFC,EAAU/I,EAAS,IAAM,EAAIA,GAAU,EAAI,EAAIA,EAAS,IAC9D0I,EAAejvB,MAAMuvB,UAArB,qDAA+ED,EAA/E,OAIJ,OACE,cAAC,WAAD,UAEE,qBACE9xB,GAAG,iBACHlF,UAAWA,GAAwB,kBACnC0H,MAAO,CAAEsW,UAAW,QACpBkZ,SAnBW,WACf7C,KAcE,SAMGsB,EAAOxzB,OACN,cAAC6kB,GAAA,EAAD,UACG2O,EAAOjqB,KAAI,SAAC0oB,EAAOpvB,GAClB,OACE,cAAC,GAAD,CACEqvB,WAAYA,EAEZI,QAASL,EAAMK,QACfC,SAAUN,EAAMM,SAChB9oB,MAAOwoB,EAAMxoB,MACbkH,MAAOshB,EAAMthB,MACbxG,SAAU8nB,EAAM9nB,SAChBgjB,OAAQ8E,EAAM9E,OACdtJ,aAAcoO,EAAMpO,aACpBuQ,MAAOnC,EAAMmC,MACbE,YAAarC,EAAMqC,YACnBrC,MAAOA,EAAMA,OAVRpvB,QAgBb,eAAC6L,GAAA,EAAD,CAASpJ,MAAM,OAAOC,MAAO,CAAEC,IAAK,OAAQyW,OAAQ,UAApD,UACE,cAACte,EAAA,EAAD,CAAMC,KAAK,SADb,6CCvFJo3B,GAAY,CAAC,eAkBbC,GAAevpB,aAAS,YAAoD,IAAD,EAAhDwpB,EAAgD,EAAhDA,MAAOxwB,EAAyC,EAAzCA,oBAC9BoL,GAAWolB,GAAS,IAApBplB,OADuE,EAErDX,mBAAyB,IAF4B,mBAExEiV,EAFwE,KAEjE+Q,EAFiE,OAGvDhmB,qBAHuD,mBAGxEoV,EAHwE,KAGlE6Q,EAHkE,OAInDjmB,oBAAe,OAANW,QAAM,IAANA,OAAA,EAAAA,EAAQulB,QAASvlB,EAAOulB,OAAS,GAJS,mBAIxEtE,EAJwE,KAIhEuE,EAJgE,OAKzCnmB,mBAAS,GALgC,mBAKxE8U,EALwE,KAK3DC,EAL2D,OAMjC/U,mBAAS,QANwB,mBAMxEomB,EANwE,KAMvDC,EANuD,OAO/BrmB,mBAAS,KAPsB,mBAOxEsmB,EAPwE,KAOtDC,EAPsD,KAQzE/pB,EAAUC,cAR+D,EASpCxH,IAAnCL,EATuE,EASvEA,SAAUG,EAT6D,EAS7DA,UAAWF,EATkD,EASlDA,UAEvB2xB,GAAsB,OAALT,QAAK,IAALA,GAAA,UAAAA,EAAOplB,cAAP,eAAe6lB,SAAUzxB,EAAUyB,aAXqB,EAYzDwJ,mBAAc,MAZ2C,mBAYxEhJ,EAZwE,KAYnEyvB,EAZmE,KAcvE7uB,EAAS6D,aAAOzE,GAAK,SAACA,GAAD,OAAckB,EAAYlB,EAAKnC,EAAU6G,sBAAqB,CACzFuQ,gBAAiB,MADXrU,KAIRhD,EAASc,cAAc,iBAEvB0W,qBAAU,WACRoa,GAAUC,EAAO,gBAAkBD,KAClC,CAACA,IAEJpa,qBAAU,YACR,OAAIzL,QAAJ,IAAIA,OAAJ,EAAIA,EAAQulB,SACVC,EAAUxlB,EAAOulB,UAElB,CAACvlB,IAEJyL,qBAAU,WACR,GAAIxU,GAAQA,EAAKqd,MAAO,CACtB,IAAMA,EAAQrd,EAAKqd,MAChBjN,MAAK,SAAClR,EAAyBmR,GAC9B,OAAOnR,EAAE9H,SAAWiZ,EAAEjZ,SAAW,GAAK,KAEvCoL,KAAI,SAACgb,EAAW1hB,GAAZ,oBAAC,gBAAgC0hB,GAAjC,IAAuC1hB,MAAOA,OAGrD,GAFAsyB,EAAS/Q,IAEJG,EAAM,CACT,IAAMsR,EAAU9E,EAAS3M,EAAM5X,MAAK,SAAC+X,GAAD,OAA6BA,EAAKpmB,WAAa4yB,KAAU3M,EAAM,GAC/FyR,IACFT,EAAQS,GACRP,EAAUO,EAAQ13B,UAClB+lB,GAAsB,OAAP2R,QAAO,IAAPA,OAAA,EAAAA,EAAShzB,OAAQgzB,EAAQhzB,MAAQ,QAKrD,CAACkE,IAEJ,IAAM+uB,EAAoB,SAAC,GAA2E,IAAzEv0B,EAAwE,EAAxEA,WAAYw0B,EAA4D,EAA5DA,SAAUvd,EAAkD,EAAlDA,YAAasE,EAAqC,EAArCA,KAAMkZ,EAA+B,EAA/BA,KACpErqB,EAAQxL,KACN,cACEw1B,EACA,KAFF,OAGEpR,QAHF,IAGEA,OAHF,EAGEA,EAAMpmB,UACN,IACAoD,EACA,IACAw0B,EACA,IACAvd,EACA,IACAsE,EACA,IACAkZ,IASAC,EAAQ7R,EACXjN,MAAK,SAAClR,EAAiBmR,GAAlB,OAAuCnR,EAAE9H,SAAWiZ,EAAEjZ,SAAW,GAAK,KAC3EoL,KAAI,SAACgb,EAAoB1hB,GACxB,MAAO,CACLqzB,SAAU3R,EAAK3mB,KACfO,SAAUomB,EAAKpmB,SACfg4B,OAAQ,kBACN,cAACC,GAAA,EAAIC,KAAL,CAAsBxoB,UAAU,EAAOhQ,UAAU,OAAjD,SACG0mB,GACC,cAAC,GAAD,CACEjhB,QAASqyB,EACTpR,KAAMA,EACNgR,gBAAiBA,EACjBC,mBAAoBA,EACpBC,iBAAkBA,EAClBC,oBAAqBA,EACrBY,kBAAmBR,EACnBpxB,oBAAqBA,KAVZ7B,QAiBnB0zB,EAAwB,EAU5B,OARIxF,GAAUkF,GACZA,EAAMh2B,SAAQ,SAACu2B,EAAW3zB,GACpB2zB,EAAKr4B,WAAa4yB,IACpBwF,EAAgB1zB,MAMpB,cAACgP,GAAA,EAAD,CAAS6e,OAAK,EAAd,SACE,cAAC0F,GAAA,EAAD,CACEnS,aAA8B,IAAjBA,EAAqBA,EAAcsS,EAChDE,KAAM,CAAEpxB,UAAU,EAAMuI,WAAW,EAAM8oB,UAAU,GACnDT,MAAOA,EACPU,YA7Cc,SAAC1e,EAAD,GAAmC,IAAxBgM,EAAuB,EAAvBA,YAC7BC,EAAeD,GACfmR,EAAQhR,EAAM5X,MAAK,SAAC+X,GAAD,OAAUA,EAAK1hB,QAAUohB,cAiD1C2S,GAAc,SAAC,GAAuF,IAAD,EAApFrS,EAAoF,EAApFA,KAAMkR,EAA8E,EAA9EA,iBAAkBa,EAA4D,EAA5DA,kBAAmB5xB,EAAyC,EAAzCA,oBAC1DmyB,EAAiB,CACrB,CAAE9qB,KAAM,SAAUnK,MAAO,aACzB,CAAEmK,KAAM,QAASnK,MAAO,WACxB,CAAEmK,KAAM,SAAUnK,MAAO,YACzB,CAAEmK,KAAM,UAAWnK,MAAO,aAL6E,EAO/CuN,mBAAS0nB,EAAe,GAAGj1B,OAPoB,mBAOlGk1B,EAPkG,KAO3EC,EAP2E,OAS7E5nB,mBAASoV,EAAKpmB,UAT+D,mBASlG4yB,EATkG,KAS1FuE,EAT0F,KAWzG/Z,qBAAU,WACJgJ,GAAQA,EAAKpmB,UAAYomB,EAAKpmB,WAAa4yB,GAC7CuE,EAAU/Q,EAAKpmB,YAEhB,CAAComB,EAAMwM,IAf+F,MAiBnF5hB,mBAAS,IAAI9P,MAjBsE,mBAiBlGmhB,EAjBkG,KAiB7FwW,EAjB6F,OAkB/E7nB,mBAASsmB,GAlBsE,mBAkBlG7zB,EAlBkG,KAkB3F+S,EAlB2F,OAmBnExF,mBAAS,IAAI9P,MAnBsD,mBAmBlG43B,EAnBkG,KAmBrFC,EAnBqF,OAoB/E/nB,mBAAS,CAAC,IAAI9P,KAAQ,IAAIA,OApBqD,mBAoBlG83B,EApBkG,KAoB3FC,EApB2F,OAqBjFjoB,oBAAS,GArBwE,mBAqBlG6mB,EArBkG,KAqB5FqB,EArB4F,KAuBnGC,EAAmD9O,iBAAO,MAC1D+O,EAAgD/O,iBAAO,MAC7DjN,qBAAU,WAIR,OAHA+b,EAAa1tB,QAAU4tB,aAAY,WACjCR,EAAO,IAAI33B,QACV,KACI,WACLi4B,EAAa1tB,SAAW6tB,aAAaH,EAAa1tB,YAEnD,IAEH2R,qBAAU,WACR,IAAKya,EAAM,CACTqB,GAAQ,GACRE,EAAU3tB,QAAUuG,YAAW,WAC7BknB,GAAQ,KACP,KACH,IAAMrY,EAAO,IAAI3f,KACjB2f,EAAKgS,SAAShS,EAAK0Y,WAAa,GAChCN,EAAS,CAACpY,EAAMwB,IAChB,IAAMmX,EAAiBR,EAAM,GAAGS,WAAaT,EAAM,GAAGS,UAAYT,EAAM,GAAGS,YAAch2B,EAAQ,KAC3Fi2B,EAAiB,IAAIx4B,KAAKs4B,GAChCT,EAAeW,MAEhB,CAACrX,EAAKwV,EAAMmB,EAAOv1B,IA/CmF,MAiDvEuN,oBAAS,GAjD8D,mBAiDlG2oB,EAjDkG,KAiDvFC,EAjDuF,OAkDrE5oB,qBAlDqE,mBAkDlG6oB,EAlDkG,KAkDtFC,EAlDsF,OAmDjF9oB,mBAAS,GAnDwE,mBAmDpG+oB,EAnDoG,KAmD7FC,EAnD6F,KAqDnGC,GAAO,WACX,GAAKN,EAmBHO,cAAcL,GACdD,GAAa,OApBC,CACdA,GAAa,GACTn2B,GAAS,MAAQk2B,GAEnBnjB,EADAujB,EAAQ,GAGV,IAAMI,EAAcd,aAAY,WAE9BW,EADAD,GAAS,GAELA,GAAS,KACXG,cAAcC,GACdP,GAAa,GACbpjB,EAAS,MAETA,EAASujB,KAEV,KACHD,EAAcK,KAOlB,OACE,cAACzmB,GAAA,EAAD,CAAShU,UAAU,OAAnB,SACE,eAAC+iB,GAAA,EAAD,WACE,eAACA,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,GAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAApB,SACE,cAAC,GAAD,CAAYqf,KAAMA,MAEpB,eAAC3D,GAAA,EAAKE,OAAN,CAAa5b,MAAO,GAApB,UACE,eAACkL,GAAA,EAAD,CACEsD,cAAc,QACdpO,MAAM,MACNC,MAAO,CACL4E,SAAU,WACV3E,IAAK,QACL0W,MAAO,QANX,iBAUE,cAACve,EAAA,EAAD,CAAMC,KAAK,uBAVb,OAYGu5B,EAAM,GAAGqB,mBAAmB,QAAS,CAAEC,SAAUzD,GAAU,QAG9D,cAAC,GAAD,CAAoBzQ,KAAMA,UAG9B,eAAC3D,GAAA,EAAKjK,IAAN,CACEpR,MAAO,CACLkO,WAAY,OACZpH,UAAW,OACX0R,gBAA2B,MAAVnc,EAAgB,GAAK,wBACtC82B,WAAY,mBACZC,oBAAqB,OACrBC,qBAAsB,QAP1B,UAUE,cAAChY,GAAA,EAAKE,OAAN,CAAavb,MAAO,CAAEL,MAAO,OAA7B,SACE,eAACkL,GAAA,EAAO6Q,MAAR,CAAc3b,MAAM,OAApB,UACE,eAAC8K,GAAA,EAAD,WACE,cAACzS,EAAA,EAAD,CAAMC,KAAK,UADb,qBAEei5B,EAAerqB,MAAK,SAACqsB,GAAD,OAAYA,EAAOj3B,QAAUk1B,YAFhE,aAEe,EAAyE/qB,QAExF,cAACE,EAAA,EAAD,CACEpO,UAAU,cACV2zB,UAAQ,EACRjqB,QAASsvB,EACTnqB,QAAS,6BACTH,SAAU,SAAC0L,EAAD,GAA6B,IAAlBrW,EAAiB,EAAjBA,MACnBm1B,EAAyBn1B,WAKjC,cAACgf,GAAA,EAAKE,OAAN,CACEvb,MAAO,CAAEL,MAAO,KAAMmqB,OAAQ,WAC9BxO,cAAe,SACfzU,UAAW,SACXjP,QAASi7B,GAJX,SAME,cAACz6B,EAAA,EAAD,CAAMC,KAAMk6B,EAAY,QAAU,OAAQp2B,KAAM,MAAO4D,MAAO,YAEhE,eAACsb,GAAA,EAAKE,OAAN,CAAavb,MAAO,CAAEL,MAAO,OAA7B,UACE,eAACkL,GAAA,EAAD,CACEjT,QAAS,WACPwX,EAAS,KACLmjB,GAAWM,MAEjB1kB,cAAc,QACdpO,MAAiB,MAAV1D,EAAgB,MAAQ,OAC/B2D,MAAO,CACL4E,SAAU,WACV3E,IAAK,QACL0W,MAAO,MACPiP,QAAmB,MAAVvpB,EAAgB,EAAI,IAXjC,iBAeE,cAACjE,EAAA,EAAD,CAAMC,KAAgB,MAAVgE,EAAgB,qBAAuB,SAfrD,OAiBa,MAAVA,EAAgBu1B,EAAM,GAAGqB,mBAAmB,QAAS,CAAEC,SAAUzD,GAAU,KAAQ,MAGtF,cAAC,SAAD,CACE7H,OAAQ,CAACvrB,GACT2K,SAAU,SAAC4gB,GACTxY,EAASwY,EAAO,KAGlB2L,cAAe,SAAC3L,GACV2K,GAAWM,KACfD,EAAShL,EAAO,KAElBL,IAAK,EACLC,IAAK,IACLiB,KAAM,GACNqE,YAAa,gBAAG/qB,EAAH,EAAGA,MAAOgF,EAAV,EAAUA,SAAV,OACX,iDACMhF,GADN,IAEE/B,MAAK,6BACA+B,EAAM/B,OADN,IAEHL,MAAO,OACP4I,OAAQ,MACR3D,SAAU,WACV3E,IAAK,OACLuzB,MAAO,OACPC,MAAO,OACP1H,WAAY2H,8BAAmB,CAC7B9L,OAAQ,CAACvrB,GACTs3B,OAAQ,CAAC,UAAW,QACpBpM,IAAK,EACLC,IAAK,MAEPwE,aAAc,QAhBlB,SAmBGjlB,MAGLomB,YAAa,gBAAGprB,EAAH,EAAGA,MAAH,OACX,iDACMA,GADN,IAEE/B,MAAK,6BACA+B,EAAM/B,OADN,IAEHuI,OAAQ,OACR5I,MAAO,OACP6Y,gBAAiB,UACjBwT,aAAc,SAPlB,SAWE,qBACEhsB,MAAO,CACLitB,QAAmB,MAAV5wB,EAAgB,OAAS,QAClCuI,SAAU,WACV3E,IAAe,MAAV5D,EAAgB,QAAU,QAC/Bua,KAAgB,MAAVva,EAAgB,QAAU,QAChC0D,MAAO,OACP8G,UAAW,SACX2R,gBAA2B,MAAVnc,EAAgB,MAAQ,OACzCorB,QAAS,OACTuE,aAAc,MACdvT,WAAY,KAXhB,SAcGiZ,EAAYuB,mBAAmB,QAAS,CAAEC,SAAUzD,GAAU,KAAMmE,OAAO,EAAG,iBAO3F,eAACvY,GAAA,EAAKjK,IAAN,CACEpR,MAAO,CACLkO,WAAY,EACZsK,gBAA2B,MAAVnc,EAAgB,GAAK,wBACtC82B,WAAY,oBAJhB,UAOE,cAAC9X,GAAA,EAAKE,OAAN,CAAavb,MAAO,CAAEL,MAAO,SAC7B,cAAC0b,GAAA,EAAKE,OAAN,CAAavb,MAAO,CAAEL,MAAO,OAA7B,SACE,eAAC0b,GAAA,EAAD,WACE,cAACA,GAAA,EAAKE,OAAN,CAAahB,QAAQ,OAAO5a,MAAO,EAAnC,SACGiyB,EAAM,GAAG5c,eAAe,QAAS,CAChC6e,UAAW,SACXC,UAAW,QACXC,QAAQ,EACRb,SAAUzD,GAAU,OAGxB,cAACpU,GAAA,EAAKE,OAAN,CAAahB,QAAQ,QAAQ1T,UAAU,QAAQlH,MAAO,EAAtD,SACGiyB,EAAM,GAAG5c,eAAe,QAAS,CAChC6e,UAAW,SACXC,UAAW,QACXC,QAAQ,EACRb,SAAUzD,GAAU,eAM9B,cAACpU,GAAA,EAAKjK,IAAN,CACEpR,MAAO,CACLwY,gBAA2B,MAAVnc,EAAgB,GAAK,wBACtC82B,WAAY,oBAHhB,SAME,cAAC9X,GAAA,EAAKE,OAAN,UACE,cAACyY,GAAD,CACExI,OAAQxM,EAAKpmB,SACbmyB,WAAY1uB,EACZ00B,kBAAmBA,EACnBxE,wBAAyBlwB,EACzB8C,oBAAqBA,cAS7B80B,GAAa,SAAC,GAAyB,IAAvBjV,EAAsB,EAAtBA,KACdkV,EAAgBjR,mBAEtB,OACE,eAAC,KAAD,CACEzlB,GAAG,iBACHwC,MAAO,CAAEgsB,aAAc,OAAQrsB,MAAO,OAAQ4I,OAAQ,QACtD4rB,SAAO,EACPC,OAAQ,CAAExvB,SAAU,EAAE,IAAK,GAAI,IAJjC,UAME,cAACyvB,GAAA,EAAD,CACED,OAAQF,EAAc7vB,QACtBiwB,WAAW,EACXC,YAAY,EACZC,cAAc,EACdj1B,OAAQ,CAAC,GAAI,GAAI,KAEnB,8BAAck1B,UAAW,KACzB,cAACC,GAAA,EAAD,CAAKC,YAAa,CAAC,EAAG,EAAG,GAAIC,SAAU,MACvC,kCACEhwB,SAAU,CAAC,EAAG,GAAI,GAClB6vB,UAAW,GACXlP,YAAU,EACVsP,wBAAuB,IACvBC,uBAAsB,MAExB,qBAAKrO,OAAO,MAAMC,KAAM,CAAC,UAAW,EAAG,OAEvC,eAAC,WAAD,CAAUqO,SAAU,KAApB,UACE,cAAC,GAAD,CAAMhR,SAAU/E,IAChB,cAAC,GAAD,CAAYwG,SAAU,EAAEtQ,KAAKuQ,GAAK,EAAG,EAAG,GAAI7gB,SAAU,CAAC,EAAG,EAAG,GAAI0e,MAAO,CAAC,IAAK,IAAK,KAEnF,cAAC,KAAD,CACEgC,eAAa,EACboB,KAAM,CAAC,IAAO,KACdlB,SAAU,EAAEtQ,KAAKuQ,GAAK,EAAG,EAAG,GAC5B7gB,SAAU,CAAC,GAAI,IAAK,GAJtB,SAME,sCAAsB6hB,OAAO,WAAW1mB,MAAM,kBAOzC2vB,MC9dFsF,GAAb,oDACE,aAAe,uCACP,CACJlT,SAAU,CACRO,QAAS,CAAEhmB,OAAO,GAClB44B,cAAe,CAAE54B,MAAO,EAAE,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,IAChD64B,WAAY,CAAE74B,MAAO,IACrB84B,YAAa,CAAE94B,MAAO,IACtB+4B,UAAW,CAAE/4B,MAAO,GACpBg5B,iBAAkB,CAAEh5B,MAAO,IAG7BqmB,aAAa,EAEbC,aAAa,kbAWbC,eAAe,s2DAzBrB,0CAqFE,SAAa0S,GACXr8B,KAAK6oB,SAASmT,cAAc54B,MAAQi5B,EACpCr8B,KAAK6oB,SAASsT,UAAU/4B,MAAQi5B,EAAS76B,SAvF7C,oBA0FE,SAAa86B,GACX,IAAIC,EAAqB,GACrBC,EAAsB,GACtBH,EAAkB,GACtBC,EACG3jB,MAAK,SAAClR,EAA4BmR,GAA7B,OAA6DnR,EAAEyT,YAActC,EAAEsC,YAAc,GAAK,KACvGzZ,SAAQ,SAACg7B,GACRF,EAAY56B,KAAK86B,EAAQvhB,aACzBshB,EAAa76B,KAAK86B,EAAQthB,cAC1BkhB,EAAS16B,KAAK86B,EAAQxxB,UAG1BjL,KAAK6oB,SAASoT,WAAW74B,MAAQm5B,EACjCv8B,KAAK6oB,SAASqT,YAAY94B,MAAQo5B,EAClCx8B,KAAK6oB,SAASmT,cAAc54B,MAAQi5B,EACpCr8B,KAAK6oB,SAASsT,UAAU/4B,MAAQk5B,EAAS96B,SAzG7C,kBA4GE,SAAWk5B,GAAc,IAAD,OACtBA,EAAOj5B,SAAQ,SAACqF,EAAYzC,GAC1B,IAAMq4B,EAAO,aAASr4B,EAAQ,EAAjB,SACb,EAAKwkB,SAAS6T,GAASt5B,MAAQ0D,GAAgB,CAAC,EAAG,EAAG,EAAG,MAE3D9G,KAAK6oB,SAASyT,SAASl5B,MAAQs3B,EAAOl5B,WAjH1C,GAAgDooB,mBAgIhDC,aAAO,CAAEkS,gC,wBCvGHjS,GAAkB,SAAChhB,GACvB,IAAMihB,EAAQC,mBACNC,EAAUC,aAAQ,uBAAlBD,MACF0S,GAAW,MAAA7zB,EAAM8sB,MACvB,OACE,cAAC,WAAD,UACE,uBAAOzL,IAAKJ,EAAOK,QAAS,KAAMC,MAAO,IAAzC,SACE,sBAAMC,SAAUL,EAAMM,MAAMD,SAAUE,SAAUP,EAAMM,MAAMC,SAAU7e,SAAU,CAAC,EAAGgxB,EAAU,GAA9F,SACE,sCAAsB71B,MAAOgC,EAAMhC,MAAO2jB,kBAAmB,WAmBjEC,GAAsB,SAAC5hB,GAC3B,IAAMihB,EAAQC,mBACNC,EAAUC,aAAQ,6BAAlBD,MAER,OACE,cAAC,WAAD,UACE,uBAAOE,IAAKJ,EAAOK,QAAS,KAAMC,MAAO,IAAzC,SACE,sBAAMC,SAAUL,EAAMU,SAASL,SAAUE,SAAUP,EAAMU,SAASH,SAAU7e,SAAU,CAAC,GAAI,IAAK,GAAhG,SACE,sCAAsB7E,MAAOgC,EAAMhC,MAAO2jB,kBAAmB,WAkCjEmS,GAAuB,UAIvBC,GAAkB,MAyJxB3S,KAAQU,QAAQ,wCAChBV,KAAQU,QAAQ,uBAChBV,KAAQU,QAAQ,6BAEDC,OAvJF,SAAC,GAA2D,IAAzDC,EAAwD,EAAxDA,SAAUgS,EAA8C,EAA9CA,kBAAmBC,EAA2B,EAA3BA,UACrC1S,EAdsB,MAcaS,EAASvF,KAAKyX,cAb5B,IAY2C,EAG9BrsB,mBAASisB,IAHqB,mBAG/DK,EAH+D,KAGjDC,EAHiD,KAIhEnT,EAAQC,mBACNC,EAAUC,aAAQ,wCAAlBD,MAEFc,EAAaC,aAAUpB,iBAAqB,eAClDmB,EAAWE,MAAQF,EAAWG,MAAQtB,kBACtCmB,EAAWI,OAAOC,IAAI,GAAI,IAC1B,IAAM+R,EAAwC,CAC5CrS,EAASnf,SAAS,GAClBmf,EAASnf,SAAS,GApBE,IAqBpBmf,EAASnf,SAAS,IAmBhByxB,EAAsB,GAC1BtS,GACEA,EAAS9E,iBACN9F,QAAO,SAACgM,GAAD,YAAgE,WAAzB,UAAAA,EAAU3G,YAAV,eAAgBja,SAC9D7J,SAAQ,SAAC47B,GAAD,OAjBO,SAACA,EAA4BD,GAC/C,IADuE,EACnEE,GAAQ,EAD2D,cAEnDF,GAFmD,IAEvE,2BAA8B,CAAC,IAAtBG,EAAqB,QACxBA,EAAQxiB,YAAcsiB,EAAG9X,KAAKxK,WAAawiB,EAAQviB,YAAcqiB,EAAG9X,KAAKvK,YAC3EuiB,EAAQC,gBAAgB77B,KAAK07B,GAC7BC,GAAQ,IAL2D,8BAWvE,OAHKA,GACHF,EAASz7B,KAAK,CAAE67B,gBAAiB,CAACH,GAAKtiB,UAAWsiB,EAAG9X,KAAKxK,UAAWC,UAAWqiB,EAAG9X,KAAKvK,YAEnFoiB,EAMoCK,CAAYJ,EAAID,MAI7D,IAAIlU,EAAWkU,EACZryB,KAAI,SAACwyB,GAAD,OAAaA,EAAQxiB,aACzB7P,QAAO,SAACC,EAAMC,GAAP,OAAoBD,EAAOC,EAAUD,EAAOC,IAAU,GAC1DsyB,EAAaxU,EAAW,GAAM,IAC9ByU,EAAiB7S,EAAS9E,iBAAiBhY,MAAK,SAAC4vB,GACrD,OAAOA,EAAIrY,KAAKja,OAASvB,MAErB8zB,EAAa/S,EAAS9E,iBAAiBhY,MAAK,SAAC4vB,GACjD,OAAOA,EAAIrY,KAAKja,OAAStB,MAG3B,OACE,wBACEmgB,IAAKJ,EACLpe,SAAUwxB,EACV5Q,SAAU,CAAC,EAAStQ,KAAKuQ,GAAK,IAAhB,GAAsB,GACpCpC,QAAS,KACTC,MAAO,CAACA,EAAOA,EAAOA,GACtByT,eAAgB,SAAC9+B,GACfA,EAAE++B,kBACFb,EArEsB,WAsEtBjc,SAAStY,KAAK5B,MAAM8pB,OAAS,UAC7BiM,EAAkBhS,EAASnrB,WAE7Bq+B,eAAgB,SAACh/B,GACfk+B,EAAgBN,IAChB3b,SAAStY,KAAK5B,MAAM8pB,OAAS,QAdjC,UAiBGuM,GACCA,EAASryB,KAAI,SAACwyB,EAAkBl5B,GAC9B,IAvDkBkqB,EAAaD,EAuDzBgO,EAAWiB,EAAQC,gBAAgBzyB,KAAI,SAACsyB,EAA4Bh5B,GACxE,MAAO,CACL4G,MAAOoyB,EAAGh8B,QAAQG,OAAS,GAAKu7B,EAAYM,EAAGn0B,OAAO+B,OAAS,EAC/DiQ,YAAcmiB,EAAG9X,KAAKrK,YAAce,KAAKuQ,GAAM,IAC/CrR,aAAekiB,EAAG9X,KAAKpK,aAAec,KAAKuQ,GAAM,QAKrD,OACE,uBAEEnC,MAAO,KACP1e,SAAU,CAAC,GA3FC,IA2FsBkxB,GAAkBU,EAAQviB,UAAY,KAAM,GAHhF,UAKE,kCAAkByS,KAAM,CAAC,EAAG,GAtEdc,EAsEkCgP,EAAQxiB,UAtE7BuT,EAsEwCiP,EAAQviB,UArE9E6hB,IAAmBtO,EAAMD,IAqEiE,GAAI,GAAG,EAAM,KACpG,4CAA4BgO,SAAUA,EAAU1O,KAAMhE,kBALjD,aAAe2T,EAAQxiB,UAAYwiB,EAAQviB,cASxD,sBACEsP,SAAUL,EAAMY,KAAKP,SAErB3e,SAAU,CAAC,GAAG,QAA2Bud,EAAW,KAAOwU,GAAY,GACvEnR,SAAU,CAACtQ,KAAKuQ,GAAK,EAAG,EAAG,GAC3BF,YAAU,EACVD,eAAa,EACbhC,MAAO,CAAC,EAAG,EAAGqT,GAPhB,SASG,sCAAsB52B,MAAOukB,KAAK7D,GAAUa,UAAWoB,aAAW,EAACkD,QAAS,OAG/E,sBACErC,SAAUL,EAAMwC,QAAQnC,SACxB3e,SAAU,CAAC,EAAG,IAAK,GACnB4gB,SAAU,CAACtQ,KAAKuQ,GAAK,EAAG,EAAG,GAC3BF,YAAU,EACVD,eAAa,EALf,SAOE,sCAAsBvlB,MAAOm2B,MAE/B,sBAAM3S,SAAUL,EAAMyC,KAAKpC,SAAU3e,SAAU,CAAC,EAAG,IAAK,GAAI4gB,SAAU,CAACtQ,KAAKuQ,GAAK,EAAG,EAAG,GAAvF,SACE,sCAAsB/C,aAAW,EAACkD,QAAS,EAAK7lB,MAAO,UAAW8lB,SAAU7B,EAAY8C,YAAY,MAGtG,cAACoQ,GAAA,EAAD,CAAMC,QAAM,EAACvyB,SAAU,CAAC,EAAG,IAAK,GAAI5E,MAAO,CAAEo3B,cAAe,QAA5D,SACE,qBAAKp3B,MAAO,CAAEwI,SAAU,UAAWiQ,WAAY,OAAQpP,WAAY,SAAUtJ,MAAO0gB,GAAUa,UAA9F,SACGyC,EAAS1rB,KAAKoC,OAAS,EAAIspB,EAAS1rB,KAApC,UAA8C0rB,EAASlrB,UAAvD,YAAoEkrB,EAAS1rB,UAIjFy+B,GACC,cAAC,GAAD,CACEjI,OAAQiI,EAAWtY,KAAKxK,UAAY8iB,EAAWtY,KAAKvK,WAAa,EACjEojB,aAAcjB,EACdr2B,MACE+2B,EAAWx8B,QAAQG,OAAS,GAAKu7B,EAC7B1R,KAAK1C,GAAoBkV,EAAW30B,OAAO+B,QAC3CogB,KAAK7D,GAAUgB,QAIxBmV,GACC,cAAC,GAAD,CACES,aAAcjB,EACdr2B,MACE62B,EAAet8B,QAAQG,OAAS,GAAKu7B,EACjC1R,KAAK1C,GAAoBgV,EAAez0B,OAAO+B,QAC/CogB,KAAK7D,GAAUgB,YCtK/B0B,KAAQU,QAAQ,wBAEDyT,OAtCG,SAAC,GAA4B,IAA1BC,EAAyB,EAAzBA,GACbvU,EAAQC,mBAD8B,EAEfE,aAAQ,wBAA7BD,EAFoC,EAEpCA,MAAOsU,EAF6B,EAE7BA,UACf,OACE,wBACEpU,IAAKJ,EACLwC,SAAU,CAAC,EAAI+R,EAAG/R,SAAWtQ,KAAKuQ,GAAM,IAAK,GAC7C7gB,SAAU,IAAI6yB,WAAQF,EAAG3yB,SAAS,GAAI2yB,EAAG3yB,SAAS,GARX,EAQ8C2yB,EAAG3yB,SAAS,IAHnG,UAKE,wBACE0e,MAAO,MACPyT,eAAgB,SAAC9+B,GACfC,QAAQC,IAAIo/B,EAAG3+B,WAHnB,UAME,sBAAM2qB,SAAUL,EAAMwU,KAAKnU,SAAUE,SAAU+T,EAAUG,UAAWrS,eAAa,EAACC,YAAU,IAC5F,sBAAMhC,SAAUL,EAAM0U,OAAOrU,SAAUE,SAAU+T,EAAU,kBAAmBlS,eAAa,EAACC,YAAU,IACtG,sBAAMhC,SAAUL,EAAM2U,OAAOtU,SAAUE,SAAU+T,EAAUM,YAAaxS,eAAa,EAACC,YAAU,IAChG,sBAAMhC,SAAUL,EAAM6U,OAAOxU,SAAUE,SAAU+T,EAAUQ,OAAQ1S,eAAa,EAACC,YAAU,IAC3F,sBAAMhC,SAAUL,EAAM+U,OAAO1U,SAAUE,SAAU+T,EAAUU,QAAS5S,eAAa,EAACC,YAAU,IAC5F,sBAAMhC,SAAUL,EAAMiV,OAAO5U,SAAUE,SAAU+T,EAAUY,MAAO9S,eAAa,EAACC,YAAU,IAC1F,sBAAMhC,SAAUL,EAAMmV,OAAO9U,SAAUE,SAAU+T,EAAU,wBAAyBlS,eAAa,EAACC,YAAU,IAC5G,sBAAMhC,SAAUL,EAAMoV,OAAO/U,SAAUE,SAAU+T,EAAU,wBAAyBlS,eAAa,EAACC,YAAU,IAC5G,sBAAMhC,SAAUL,EAAMqV,OAAOhV,SAAUE,SAAU+T,EAAU,wBAAyBlS,eAAa,EAACC,YAAU,IAC5G,sBAAMhC,SAAUL,EAAMsV,OAAOjV,SAAUE,SAAU+T,EAAUiB,aAAcnT,eAAa,EAACC,YAAU,IACjG,sBAAMhC,SAAUL,EAAMwV,QAAQnV,SAAUE,SAAU+T,EAAU,uCAAoBlS,eAAa,EAACC,YAAU,OAE1G,wBAAOjC,MAAO,MAAd,UAEE,sBAAMC,SAAUL,EAAMyV,QAAQpV,SAAUE,SAAU+T,EAAU,kBAAmBlS,eAAa,EAACC,YAAU,IACvG,sBAAMhC,SAAUL,EAAM0V,UAAUrV,SAAUE,SAAU+T,EAAU,eAAgBlS,eAAa,EAACC,YAAU,WCnD/FsT,GAlBoB,SAAC92B,GAClC,IAAMwG,EAAS0b,aAAUpB,iBAAqB,iBACxCiW,EAAU7U,aAAUpB,iBAAqB,wBAE/C,OACE,cAAC,KAAD,6BACM9gB,GADN,IAEEuhB,MAAO,CAAC,IAAK,IAAK,KAClBkC,SAAU,EAAEtQ,KAAKuQ,GAAK,EAAG,EAAG,GAC5BiB,KAAM,CAAC,GAAI,GAAI,KAAM,MACrBnB,YAAU,EACVD,eAAa,EANf,SAQE,sCAAsBmB,OAAO,WAAW1mB,MAAM,OAAOumB,UAAWwS,EAASC,gBAAiBxwB,Q,oBCgB1FywB,GAAyB,SAAC1C,EAA4B2C,GAC1D,IAAI3a,EAAe2a,EAAiBj1B,KAAI,SAAC6pB,GAAD,OAA2BA,EAAKtpB,QACxE,OAAO+xB,EAAGh8B,QACP6e,QAAO,SAACje,GACP,IAAIg+B,ErCZwB,SAACh+B,GACjC,OAAQA,EAAOQ,aACb,QACE,MAAO,GACT,KAAKkH,GACH,MAAO,CAACW,GAAyBL,IACnC,KAAKR,GACH,MAAO,CAACU,GAAwBD,IAClC,KAAKN,GACH,MAAO,CAACQ,GAA4BH,IACtC,KAAKP,GACH,MAAO,CAACW,GAA2BJ,KqCCVi2B,CAA0Bj+B,GAEnD,OAA4B,IADFojB,EAAanF,QAAO,SAACigB,GAAD,OAAQF,EAAmB10B,SAAS40B,MACjE3+B,UAElBuJ,KAAI,SAAC9I,GAAD,OAA4BA,EAAOtC,aAuItCygC,GAAsB,SAAC3M,GAC3B,IAAM4M,EAAa,CAAC,SAD6B,EAEnB1vB,oBAAU8iB,EAAM6M,WAFG,mBAE1C35B,EAF0C,KAEjCgqB,EAFiC,KAIjD0P,EAAW1+B,KAAK,YAAc8xB,EAAMzoB,SAAW,EAAI,EAAIyoB,EAAMzoB,WAEzDyoB,EAAM8M,IAAM,IACdF,EAAW1+B,KAAK,WAChB0+B,EAAW1+B,KAAmB,IAAd8xB,EAAM8M,IAAY,MAAQ,UAE5C,IAIIlb,EAAuBoO,EAAMzZ,YAC9BjP,KAAI,SAACo1B,GACJ,OAAOA,EAAE70B,KAAKsP,MAAM,EAAG,GAAGD,cAAgBwlB,EAAE70B,KAAKsP,MAAM,GAAK,IAAMulB,EAAEnmB,YAAYqF,QAAQ,GAAKhE,GAAQ8kB,EAAE70B,SAExG6U,KAAK,MAER,OACE,cAACqgB,GAAA,EAAD,CAAY75B,QAASA,EAASF,UAAU,OAAOiF,SAAU,IAAzD,SACE,eAAC+0B,GAAA,EAAD,CAAMphC,UAAWghC,EAAWlgB,KAAK,KAAjC,UACE,eAACsgB,GAAA,EAAK5zB,QAAN,WACE,cAAC4zB,GAAA,EAAK7zB,OAAN,UAAc6mB,EAAMiN,cAAc/lB,gBAClC,cAAC8lB,GAAA,EAAK5rB,YAAN,UAAmBwQ,IACnB,eAACob,GAAA,EAAK5rB,YAAN,mBACQ4e,EAAMrO,SADd,MAC2BqO,EAAMmC,MADjC,KAC0CnC,EAAMiJ,QAAQvqB,MADxD,KACiE,IAC9DshB,EAAM+D,KAAKwC,mBAAmB,QAAS,CAAE2G,KAAM,UAAWC,OAAQ,kBAGvE,eAAChvB,GAAA,EAAO6Q,MAAR,CAAcyP,OAAK,EAAC7yB,UAAU,QAA9B,UACE,cAACuS,GAAA,EAAD,CACEvS,UAAU,QACVV,QAAS,WACH80B,GACFA,EAAMtmB,QAAQxL,KAAK,cAAgB8xB,EAAMoN,YAAY,KAJ3D,uBAUA,cAACjvB,GAAA,EAAD,CAAQvS,UAAU,QAAQV,QAhClB,WACdgyB,GAAW,GACX8C,EAAMqN,aAAarN,EAAM1N,KAAM0N,EAAMpC,gBAAiBoC,EAAMiN,gBA8BtD,8BASKK,GAvLM,SAAC,GAAuD,IAArDnb,EAAoD,EAApDA,MAAO1f,EAA6C,EAA7CA,oBACvBiH,EAAUC,cAD0D,EAEtCuD,mBAAuB,IAFe,mBAEnEqwB,EAFmE,KAEvDC,EAFuD,OAG1BtwB,oBAAS,GAHiB,mBAGnEuwB,EAHmE,KAGjDC,EAHiD,KAK1EpkB,qBAAU,WACR,IAAM+jB,EAAe,SAACvO,EAAgB2C,EAAwBkM,GAC9C,aAAOxb,GACC5X,MAAK,SAAC+X,GAAD,OAAUA,EAAKpmB,WAAa4yB,KAC1BvM,iBAAiBhY,MAC5C,SAACqjB,GAAD,OAAqBA,EAAgB1xB,WAAau1B,KAEnBC,gBAAgBnnB,MAC/C,SAACmnB,GAAD,OAAqBA,EAAgB/1B,OAASgiC,KAGvCd,WAAY,GAGnBe,EAA+B,GAEnCzb,GACEA,EAAMnkB,SAAQ,SAACskB,GACbA,EAAKC,iBAAiBvkB,SAAQ,SAAC6/B,GAC7BA,EAAKnM,gBAAgB1zB,SAAQ,SAACyH,GAC5B,GAAIA,EAAO8B,SAASC,MAAQ,EAAG,CAC7B,IAAM2qB,EAAQ0L,EAAK/b,KAAKxK,WAAaumB,EAAK/b,KAAKxK,UAAYumB,EAAK/b,KAAKvK,WAAa,EAC5EumB,EAAuB,CAC3Bxb,KAAMA,EAAKpmB,SACXylB,SAAUW,EAAK3mB,KACfw2B,MAAOA,EACP8G,QAASzhB,GAAiBqmB,EAAK/b,MAC/B8L,gBAAiBiQ,EAAK3hC,SACtB+gC,cAAex3B,EAAO9J,KACtB8J,OAAQA,EAAO8B,SAAS8qB,YACxBA,YAAa5sB,EAAO4sB,YACpB9qB,SAAU9B,EAAO8B,SAASC,MAC1BusB,KAAMtuB,EAAOqa,KAAOra,EAAOqa,KAAO,IAAI1iB,KACtCy/B,UAAWp3B,EAAOo3B,UAClBC,IAAK,EACLvmB,YAAa9Q,EAAOmc,aAAenc,EAAOmc,aAAe,GACzDyb,aAAcA,EACd56B,oBAAqBA,EACrBiH,QAASA,EACT0zB,YAAad,GAAuBuB,EAAMp4B,EAAOmc,eAEnDgc,EAAe1/B,KAAK4/B,aAM9BN,EAAcI,KACb,CAACzb,EAAO1f,EAAqBiH,IAEhC,IAAMq0B,EAAiB,SAACrN,GAClBA,GAAQ6M,EAAW9gB,QAAO,SAACuT,GAAD,OAAYA,EAAM6M,aAAW9+B,OAAS,EAClE2/B,GAAoB,GACfA,GAAoB,IAG7B,OACE,eAACxsB,GAAA,EAAD,CACE5N,MAAO,CACLL,MAAO,QACPiF,SAAU,WACV+R,MAAO,KACP+jB,UAAW,OACXC,UAAW,SACXpyB,OAAQ,yBACR1B,UAAW,UAGb+zB,YAAa,WACXH,GAAe,IAEjBI,aAAc,WACZJ,GAAe,IAfnB,UAkBGN,GACC,cAACtvB,GAAA,EAAD,CACEsgB,OAAK,EACLprB,MAAM,OACNC,MAAO,CAAEL,MAAO,qBAChBxD,KAAK,OACLvE,QAAS,WACPqiC,EAAWv/B,SAAQ,SAACgyB,GAClBA,EAAMqN,aAAarN,EAAM1N,KAAM0N,EAAMpC,gBAAiBoC,EAAMiN,mBAPlE,yBAcDM,EACEroB,MAAK,SAAClR,EAAGmR,GAEsC,IAAD,IAD7C,OAAInR,EAAEuD,WAAa4N,EAAE5N,SACfvD,EAAE+vB,KAAK4B,YAAcxgB,EAAE4e,KAAK4B,UAC1B3xB,EAAEquB,cAAgBld,EAAEkd,aAAoB,UAAAruB,EAAEi1B,eAAF,eAAWthB,YAAX,UAAuBxC,EAAE8jB,eAAzB,aAAuB,EAAWthB,WAAY,GAAK,EACxF3T,EAAEquB,YAAcld,EAAEkd,YAAc,GAAK,EAEvCruB,EAAE+vB,KAAO5e,EAAE4e,MAAQ,EAAI,EAEzB/vB,EAAEuD,SAAW4N,EAAE5N,UAAY,EAAI,KAEvCD,KAAI,SAAC0oB,EAAOpvB,GAAR,OACH,cAAC,GAAD,CAEE0hB,KAAM0N,EAAM1N,KACZX,SAAUqO,EAAMrO,SAChBwQ,MAAOnC,EAAMmC,MACb8G,QAASjJ,EAAMiJ,QACfrL,gBAAiBoC,EAAMpC,gBACvBqP,cAAejN,EAAMiN,cACrBlJ,KAAM/D,EAAM+D,KACZxsB,SAAUyoB,EAAMzoB,SAChB9B,OAAQuqB,EAAMvqB,OACd4sB,YAAarC,EAAMqC,YACnByK,IAAK9M,EAAM8M,IACXvmB,YAAayZ,EAAMzZ,YACnBsmB,UAAW7M,EAAM6M,UACjBQ,aAAcrN,EAAMqN,aACpB56B,oBAAqBA,EACrBiH,QAASA,EACT0zB,YAAapN,EAAMoN,aAjBdpN,EAAM1N,KAAO0N,EAAMpC,gBAAkBoC,EAAMiN,sBCvH7CmB,GA9BK,SAAC,GAAgC,IAA9BtV,EAA6B,EAA7BA,SACrB,OACE,qBAAKhoB,GAAG,mBAAmBwC,MAAO,CAAE4E,SAAU,WAAYiS,OAAQ,EAAGkT,UAAU,UAAD,OAAYvE,EAAZ,SAA9E,SACE,qBACEllB,QAAQ,MACR9C,GAAG,UACHu9B,MAAM,6BACNC,WAAW,+BACXr7B,MAAM,MACN4I,OAAO,MACP0yB,QAAQ,cACRC,SAAS,WARX,SAUE,oBAAGnR,UAAU,oBAAb,UACE,sBACEoR,SAAS,UACTC,SAAS,UACTpS,KAAK,UACLpD,QAAS,GACT1Z,EAAE,87MAEJ,sBAAM6d,UAAU,wBAAwBf,KAAK,UAAUqS,WAAW,QAAQ7yB,SAAS,KAAnF,uBCCJ8yB,GAAWn1B,aACf,YAAmG,IAAhGjB,EAA+F,EAA/FA,KAAMq2B,EAAyF,EAAzFA,UAAWC,EAA8E,EAA9EA,YAAar8B,EAAiE,EAAjEA,oBAAqBs8B,EAA4C,EAA5CA,WAAYC,EAAgC,EAAhCA,WACxDj9B,EAAcI,IAAdJ,UACFy1B,EAAgBjR,mBAF0E,EAGvErZ,mBAAS,IAAI6tB,WAAQ,GAAI,IAAK,MAAhDkE,EAHyF,sBAKhE/xB,mBAAS,GALuD,mBAKzF4b,EALyF,KAK/EoW,EAL+E,KAO5F/hB,EAAM,IAAI4d,WACVoE,EAAM,IAAIC,aACRC,EAAW,WASf,OARA3V,cAAS,SAAC5c,GACRA,EAAM4qB,OAAO4H,kBAAkBniB,GAC/BgiB,EAAII,eAAepiB,GAEnB,IAAMqiB,EAASC,aAAUC,SAASP,EAAIQ,OAAS,IAE/CT,EAAYM,MAEP,MAET,OACE,eAAC,WAAD,WACE,eAAC,KAAD,CACE1+B,GAAG,YACHwC,MAAO,CAAE4E,SAAU,WAAYjF,MAAO,OAAQ4I,OAAQ,SACtD6rB,OAAQ,CAAExvB,SAAU+2B,EAAgBW,KAAM,GAAKC,IAAK,KACpDC,OAAQ,CAAEC,SAAUC,MAJtB,UAQE,cAACX,EAAD,IACA,cAAC1H,GAAA,EAAD,CACED,OAAQF,EAAc7vB,QACtBkwB,YAAU,EACVC,cAAY,EACZmI,YAAa,GACbC,eAAa,EACbC,cAAe,IACfC,cAAe,EACfC,cAAe,IACfC,YAAa,IACbC,QAAS,IACTC,QAAS,IACT39B,OAAQ,CAAC,IAAK,EAAG,KAGnB,qBAAKknB,OAAO,MAAMC,KAAM,CAAC,UAAW,EAAG,OACvC,8BAAc+N,UAAW,KACzB,kCACE7vB,SAAU,CAAC,EAAG,EAAG,GACjB6vB,UAAW,EACXlP,YAAU,EACVsP,wBAAuB,IACvBC,uBAAsB,MAExB,cAACJ,GAAA,EAAD,CAAKC,YAAa,CAAC,EAAG,EAAG,GAAIC,SAAU,KAAMuI,SAAU,KAGtDj4B,GAAQA,EAAK2Z,OACZ,cAAC,WAAD,CAAUkW,SAAU,KAApB,SACE,cAAC,GAAD,CACElW,MAAO3Z,EAAK2Z,MACZgR,QAAS0L,EACT6B,YAAa5B,EACb6B,UAAW,aACXl+B,oBAAqBA,EACrB62B,UAAW0F,MAKhBx2B,GAAQA,EAAKo4B,eACZ,cAAC,WAAD,CAAUvI,SAAU,KAApB,SACE,uBACEn9B,QAAS,SAACK,GACJA,EAAEslC,SACJtlC,EAAE++B,kBACFl1B,EAAY,oCAAqCrD,EAAU6G,mBAAoB,CAC7E3D,OAAQ,UALhB,SAUE,cAAC,GAAD,CAAW41B,GAAIryB,EAAKo4B,oBAK1B,cAAC,WAAD,CAAUvI,SAAU,KAApB,SACE,cAAC,GAAD,CAAanwB,SAAU,CAAC,GAAI,IAAK,OAEnC,cAAC,WAAD,CAAUmwB,SAAU,KAApB,SACE,cAAC,GAAD,CAAYvP,SAAU,EAAEtQ,KAAKuQ,GAAK,EAAG,EAAG,GAAI7gB,SAAU,CAAC,EAAG,EAAG,GAAI0e,MAAO,CAAC,IAAM,IAAM,UASxFmY,GAAcv2B,GAAQ,cAAC,GAAD,CAAc2Z,MAAO3Z,EAAK2Z,MAAO1f,oBAAqBA,IAK7E,cAAC,GAAD,CAAaqmB,SAAUA,UAezBgY,GAAY,SAAC,GAAqF,IAAnF3e,EAAkF,EAAlFA,MAAOue,EAA2E,EAA3EA,YAAaj+B,EAA8D,EAA9DA,oBAAqB0wB,EAAyC,EAAzCA,QAASmG,EAAgC,EAAhCA,UAC/DhT,EAAQC,mBADuF,EAGzDrZ,mBAAS,MAHgD,mBAG9F6zB,EAH8F,KAG9E1H,EAH8E,KAIrG,OACE,uBACE3S,IAAKJ,EACL0a,gBAAiB,SAACzlC,GACD,UAAXA,EAAEsM,OACJsrB,OAAQ7xB,GACRmB,GAAoB,KAGxBvH,QAAS,SAACK,GACRA,EAAE++B,kBACFoG,EAAYK,IAVhB,SAaG5e,EAAM7a,KAAI,SAACxC,EAAMlE,GAAP,OACT,cAAC,GAAD,CAAkBymB,SAAUviB,EAAMu0B,kBAAmBA,EAAmBC,UAAWA,GAAxE14B,SAMJg+B,MCpJAqC,GAlBG,SAAC,GAA0C,IAAxC/9B,EAAuC,EAAvCA,QAAS6G,EAA8B,EAA9BA,QAC5B,OACE,cAAChH,EAAA,EAAD,CACEC,UAAU,UACVjC,UAAU,QACVmC,QAASA,EACTI,MAAO,CACLuvB,UAAW,gBACX5vB,MAAO,MACP4W,SAAU,QACViC,gBAAiB,wBACjBqR,OAAQ,KAEVpjB,QAASA,K,UCqEAm3B,GAjFO,SAAC,GAAuE,IAArErI,EAAoE,EAApEA,SAAUsI,EAA0D,EAA1DA,cAAeC,EAA2C,EAA3CA,iBAChD,OAAIvI,EAAS96B,QAAU,EACd,6BAGP,qCACE,qBAAK+C,GAAG,aAEP+3B,EAASvxB,KAAI,SAAC2xB,EAAyBr4B,GAAmB,IAAD,IAClDkoB,GAAW,UAAAmQ,EAAQnX,YAAR,eAAcrK,aAAc,GACzCwhB,IAAYkI,GAA+C,KAA9B,UAAAlI,EAAQnX,YAAR,eAAcrK,cAC7C2pB,EAAiBnI,EAAQn5B,KAE3B,IAAM0D,EAAS29B,EAAiBA,IAAkBlI,EAAQn5B,IAAgC,IAAVc,EAChF,OACE,qBAAuBhF,UAAU,KAAK0H,MAAO,CAAE+pB,UAAW,UAAYvE,EAAW,QAAjF,SACE,qBACE5tB,QAAS,WACPkmC,EAAiBnI,EAAQn5B,MAE3BlE,UAAW,mBAAqB4H,EAAS,SAAW,OAL9Cy1B,EAAQn5B,QAWtB,qBAEEwD,MAAO,CACLC,IAAK,OACL2E,SAAU,WACVgS,KAAM,OACN7W,MAAO,QACPyI,SAAU,OACV4uB,cAAe,QARnB,cACO,KAYP,qBAEEp3B,MAAO,CACLC,IAAK,OACL2E,SAAU,WACVgS,KAAM,QACN7W,MAAO,QACPyI,SAAU,OACV4uB,cAAe,QARnB,cACO,KAYP,qBAEEp3B,MAAO,CACLC,IAAK,OACL2E,SAAU,WACVgS,KAAM,OACN7W,MAAO,QACPyI,SAAU,OACV4uB,cAAe,QARnB,cACO,KAYP,qBAEEp3B,MAAO,CACLC,IAAK,OACL2E,SAAU,WACVgS,KAAM,OACN7W,MAAO,QACPyI,SAAU,OACV4uB,cAAe,QARnB,cACO,SCtEA2G,GAAb,WAME,aAAe,yBALfC,aAAuB,EAKT,KAJdC,WAAqB,EAIP,KAHdC,cAAwB,EAGV,KAFdC,iBAA2B,EAEb,KADdj5B,UAAiClH,EAE/BhF,YAAmBC,MAPvB,mDAUE,SAAgB4Y,GACd3Z,QAAQC,IAAI,gBACZc,KAAK+kC,YAAcnsB,IAZvB,2BAeE,SAAcA,GACZ5Y,KAAKglC,UAAYpsB,IAhBrB,8BAmBE,SAAiBA,GACf5Y,KAAKilC,aAAersB,IApBxB,iCAuBE,SAAoBA,GAClB5Y,KAAKklC,gBAAkBtsB,IAxB3B,qBA2BE,SAAQ3M,GACNjM,KAAKiM,KAAOA,MA5BhB,KAgCMk5B,GAAmB7/B,wBAAc,CAAE8/B,eAAgB,IAAIN,KAG9CO,GADW,kBAAMx/B,qBAAWs/B,KC1BrCG,GAA+B,SAAClgB,EAAkBqO,GACtD,OAAKrO,GAAaqO,EAIX,WAAaha,KAAEC,WAAW+Z,EAAMr0B,MAAQ,kBAAoBgmB,EAH1D,IAuJImgB,GA1Icr4B,aAAS,YAAoE,IAQ9F,EAR6BpI,EAAgE,EAAhEA,QAASsgB,EAAuD,EAAvDA,SAAUqO,EAA6C,EAA7CA,MAAO1N,EAAsC,EAAtCA,KAC3D7Z,EAAQrG,qBAAWsG,IACjB3G,EAAcI,IAAdJ,UACA4/B,EAAmBC,KAAnBD,eAH+F,EAI7Dz0B,qBAJ6D,mBAIhGi0B,EAJgG,KAIjFC,EAJiF,OAKvDl0B,qBALuD,mBAKhG60B,EALgG,KAK9EC,EAL8E,KAOnGC,EAAoC,GACpC3f,IACF,UAAAA,EAAKC,wBAAL,SAAuBrN,MAAK,SAAClR,EAA2BmR,GAA5B,OAC1BnR,EAAE8d,KAAKvK,UAAYpC,EAAE2M,KAAKvK,UAAY,GAAK,KAE7C0qB,EAAkB3f,EAAKC,iBAAiBjb,KAAI,SAACjM,GAAsC,IAAD,IAC1E82B,GAAgB,OAAR92B,QAAQ,IAARA,GAAA,UAAAA,EAAUymB,YAAV,eAAgBxK,WACH,UAAvBjc,EAASymB,KAAKja,KACZxM,EAASymB,KAAKvK,UAAY,MAAQlc,EAASymB,KAAKxK,UAChDjc,EAASymB,KAAKxK,WAAajc,EAASymB,KAAKxK,UAAYjc,EAASymB,KAAKvK,WAAa,EAClF,EACE8a,GAAc,UAAAh3B,EAASymB,YAAT,eAAeja,MACR,UAAvBxM,EAASymB,KAAKja,KACZsqB,EAAQ,iBACRA,EAAQ,YAAcnc,KAAEksB,WAAW7mC,EAASymB,KAAKja,MAAMs6B,QAAQ,IAAK,KACtE,UACJ,MAAO,CACLriC,IAAKzE,EAASa,SACdyD,MAAOtE,EAASa,SAChB4N,KAAMuoB,EAENvQ,KAAMzmB,EAASymB,UAIrB,IAAI+W,EAA6B,GACjC,GAAIoJ,EAAgBlkC,OAAS,EAAG,CAC9B,IAAM1C,EAAW4mC,EAAgB13B,MAAK,SAACqsB,GAAD,OAA4BA,EAAO92B,MAAQiiC,KACjFlJ,EAAWoJ,EAAgBxlB,QACzB,SAAC2lB,GAAD,eACE,UAAAA,EAAEtgB,YAAF,eAAQvK,cAAR,OAAsBlc,QAAtB,IAAsBA,GAAtB,UAAsBA,EAAUymB,YAAhC,aAAsB,EAAgBvK,YACtC6qB,EAAEtgB,KAAKja,OAASxM,EAASymB,KAAKja,MAC9Bu6B,EAAEtgB,KAAKxK,YAAcjc,EAASymB,KAAKxK,aAIzC,IAAM+qB,EAAM,uCAAG,kCAAAr+B,EAAA,yDACRgsB,GAAU1N,EADF,uBAEX9mB,QAAQC,IAAI,YAFD,6BAMT6mC,EAAWtS,EAAM9zB,SACfqmC,EAAcpB,GAAgCY,EAE9CnI,EAAKtX,EAAKC,iBAAiBhY,MAAK,SAACqvB,GAAD,OAAgCA,EAAG19B,WAAaqmC,KATzE,uBAYX95B,EAAM9D,MAAM,oBAZD,gCAgBP,OAAFi1B,QAAE,IAAFA,OAAA,EAAAA,EAAIhI,UAAUryB,WAAU,SAACyE,GAAD,OAAsBA,EAAE9H,WAAa8zB,EAAM9zB,cAAa,GAhBvE,wBAiBXuM,EAAM9D,MAAM,mDAjBD,2BAqBb,UAAAS,EACE,0BAA4Bm9B,EAAc,mBAAqBD,EAAW,SAC1EvgC,EAAU6G,mBACV,CACE3D,OAAQ,eAJZ,SAOIV,MAAK,SAACC,GACNA,EAAIG,MACA8D,EAAM9D,MAAM,qCAAuCH,EAAIiB,OAAS,IAAMjB,EAAII,YAC1E6D,EAAMgL,QAAQ,gCAClBuuB,OAAoB1gC,GACpBqgC,EAAea,kBAAiB,GAChC9uB,aAAO,gBAAD,OAAiBrS,IACvBqS,aAAO,uBAAD,OAAwBrS,OAE/B2N,OAAM,SAACyzB,GACNh6B,EAAM9D,MAAM,4BAtCH,4CAAH,qDA0CZ,OACE,eAAC+9B,GAAA,EAAD,CAAO5uB,KAAM6tB,EAAeH,aAAc/hC,KAAK,OAAOkjC,QAAM,EAAC/mC,UAAU,OAAvE,UACE,cAAC8mC,GAAA,EAAMv5B,OAAP,UAAe04B,GAA6BlgB,EAAUqO,KACtD,cAAC0S,GAAA,EAAMt5B,QAAP,CAAe9F,MAAO,CAAED,MAAO,SAA/B,SACE,eAACsb,GAAA,EAAD,CAAMikB,WAAS,EAACtM,QAAS,EAAzB,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAApB,SACE,cAACie,GAAA,EAAD,CACEhX,OAAK,EACLD,YAAY,mBACZ3E,QAAS28B,EAAgBxlB,QAAO,SAACphB,GAAD,aAAkD,KAA/B,UAAAA,EAASymB,YAAT,eAAerK,gBAClEnN,SAAU,SAAC/O,EAAD,GAAmB,IAAboE,EAAY,EAAZA,MACdyhC,OAAiB9/B,GACjB0gC,EAAoBriC,IAEtBA,MAAOoiC,MAGX,cAACpjB,GAAA,EAAKE,OAAN,CACE5b,MAAO,EACPK,MAAO,CACLuI,OAAQ,QACRzB,UAAW,QACXijB,UAAW,oDALf,SAQE,cAAC,GAAD,CAAewL,SAAUA,EAAUsI,cAAeA,EAAeC,iBAAkBA,WAIzF,eAACsB,GAAA,EAAMG,QAAP,WACE,cAAC10B,GAAA,EAAD,CACEjT,QAAS,SAACK,GACR6lC,OAAiB9/B,GACjBqgC,EAAea,kBAAiB,IAElCtsB,UAAQ,EALV,oBASA,cAAC/H,GAAA,EAAD,CACEjT,QAAS,SAACK,GACJwmC,EAAkBM,IACjB55B,EAAM9D,MAAM,2BAEnBwL,UAAQ,EALV,8B,UCnJF2yB,GAAkB,CACtB,CAAEhjC,IAAK,YAAagK,KAAM,YAAanK,MAAO,aAC9C,CAAEG,IAAK,YAAagK,KAAM,YAAanK,MAAO,cAE1CojC,GAAmB,CACvB,CAAEjjC,IAAK,SAAUgK,KAAM,SAAUnK,MAAO,UACxC,CAAEG,IAAK,QAASgK,KAAM,OAAQnK,MAAO,SACrC,CAAEG,IAAK,WAAYgK,KAAM,WAAYnK,MAAO,YAC5C,CAAEG,IAAK,QAASgK,KAAM,QAASnK,MAAO,SACtC,CAAEG,IAAK,cAAegK,KAAM,cAAenK,MAAO,eAClD,CAAEG,IAAK,YAAagK,KAAM,YAAanK,MAAO,cAG1CqjC,GAAgB,SAACC,EAAeC,EAAeC,EAAcC,GACjE,OAAQF,GACN,QACE,OAAO,EACT,IAAK,YACH,OAAOC,GAAQC,EACjB,IAAK,YACH,OAAOD,GAAQC,IAIfC,GAAwB,SAACC,EAAkBH,EAAcC,GAC7D,OAAOE,EAAWH,GAAQG,EAAWF,GAAQE,EAAWH,GAAQG,EAAWF,GAQvEG,GAAwB,SAAC,GAAgE,IAA9DC,EAA6D,EAA7DA,WAAYC,EAAiD,EAAjDA,eAAiD,EAClEv2B,mBAAiB,IADiD,mBACrF+1B,EADqF,KAC9ES,EAD8E,OAE5Dx2B,mBAAiB,GAF2C,mBAErFo2B,EAFqF,KAE3EK,EAF2E,OAGpEz2B,mBAAiB,GAHmD,mBAGrFk2B,EAHqF,KAG/EQ,EAH+E,OAIpE12B,mBAAiB,GAJmD,mBAIrFi2B,EAJqF,KAI/EU,EAJ+E,KAyB5F,OAnBAvqB,qBAAU,WACM,KAAV2pB,GAA6B,IAAbK,GAA2B,IAATF,GAAuB,IAATD,EAUlDK,EATkC,CAChCM,aAAc,sBACdC,eAAgB,GAChBniB,aAAcqhB,EACdnR,yBAA0B,EAC1BkS,cAAeb,EACfc,eAAgBb,EAChBc,eAAgBZ,IAGTG,IACTC,EAASD,EAAe7hB,cACxB+hB,EAAYF,EAAeS,gBAC3BN,EAAQH,EAAeQ,gBACvBJ,EAAQJ,EAAeO,kBAExB,CAACf,EAAOK,EAAUF,EAAMD,EAAMK,EAAYC,IAE3C,eAAC9kB,GAAA,EAAD,WACE,eAACA,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,eAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,QAAvB,UACE,cAACzO,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAM,WAC1B,cAACgO,GAAA,EAAD,+BAEF,cAACsN,GAAA,EAAKE,OAAN,UACE,cAAC7U,EAAA,EAAD,CACE1E,QAASy9B,GACTpjC,MAAOsjC,EACP34B,SAAU,SAAC/O,EAAGiU,GACRA,EAAE7P,OACJ+jC,EAASl0B,EAAE7P,MAAMiN,iBAMzB,cAAC+R,GAAA,EAAKE,OAAN,UACE,cAAC9L,GAAA,EAAD,CACEpO,MAAO0+B,GAAsBC,EAAUH,EAAMC,GAC7Cv7B,KAAK,SACLlI,MAAOwjC,EACP74B,SAAU,SAAC/O,EAAGiU,IACPA,EAAE7P,MAAQ,GACbkkC,GAASr0B,EAAE7P,eAMrB,eAACgf,GAAA,EAAKjK,IAAN,CAAUkK,cAAc,SAAS0X,QAAS,EAA1C,UACE,eAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,QAAvB,UACE,cAACzO,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAM,QAC1B,cAACgO,GAAA,EAAD,gCAEF,cAACsN,GAAA,EAAKE,OAAN,UACE,cAAC7U,EAAA,EAAD,CACE1E,QAASy9B,GACTpjC,MAAOsjC,EACP34B,SAAU,SAAC/O,EAAGiU,GACRA,EAAE7P,OACJ+jC,EAASl0B,EAAE7P,MAAMiN,iBAKzB,cAAC+R,GAAA,EAAKE,OAAN,UACE,cAAC9L,GAAA,EAAD,CACEpO,MAAO0+B,GAAsBC,EAAUH,EAAMC,GAC7Cv7B,KAAK,SACLlI,MAAOyjC,EACP94B,SAAU,SAAC/O,EAAGiU,IACPA,EAAE7P,MAAQ,GACbikC,GAASp0B,EAAE7P,eAMrB,eAACgf,GAAA,EAAKjK,IAAN,CAAUkK,cAAc,SAAS0X,QAAS,EAA1C,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,QAAvB,SACE,cAACkH,GAAA,EAAD,yBAEF,cAACsN,GAAA,EAAKE,OAAN,UACE,cAAC7U,EAAA,EAAD,CACE1E,QAASy9B,GACTpjC,MAAOsjC,EACP34B,SAAU,SAAC/O,EAAGiU,GACRA,EAAE7P,OACJ+jC,EAASl0B,EAAE7P,MAAMiN,iBAKzB,cAAC+R,GAAA,EAAKE,OAAN,UACE,cAAC9L,GAAA,EAAD,CACEpO,MAAO0+B,GAAsBC,EAAUH,EAAMC,GAC7Cv7B,KAAK,SACLlI,MAAO2jC,EACPh5B,SAAU,SAAC/O,EAAGiU,GACZm0B,GAAan0B,EAAE7P,mBAcvBwkC,GAAoB,SAAC,GAA4D,IAA1DX,EAAyD,EAAzDA,WAAYC,EAA6C,EAA7CA,eAA6C,EAC1Dv2B,mBAAiB,IADyC,mBAC7E+1B,EAD6E,KACtES,EADsE,OAE1Dx2B,mBAAiB,IAFyC,mBAE7Ek3B,EAF6E,KAEtEC,EAFsE,OAG5Dn3B,mBAAiB,GAH2C,mBAG7Ek2B,EAH6E,KAGvEQ,EAHuE,OAK5D12B,mBAAiB,GAL2C,mBAK7Ei2B,EAL6E,KAKvEU,EALuE,KA0BpF,OAnBAvqB,qBAAU,WACM,KAAV2pB,GAA0B,KAAVmB,GAAyB,IAAThB,GAAuB,IAATD,EAUhDK,EATkC,CAChCM,aAAc,sBACdC,eAAgBK,EAChBxiB,aAAcqhB,EACdnR,yBAA0B,EAC1BkS,cAAeb,EACfc,eAAgBb,EAChBc,gBAAiB,IAGVT,IACTC,EAASD,EAAe7hB,cACxByiB,EAASZ,EAAeM,gBACxBH,EAAQH,EAAeQ,gBACvBJ,EAAQJ,EAAeO,kBAExB,CAACf,EAAOmB,EAAOhB,EAAMD,EAAMK,EAAYC,IAExC,eAAC9kB,GAAA,EAAD,CAAM2X,QAAS,EAAf,UACE,eAAC3X,GAAA,EAAKjK,IAAN,CAAUkK,cAAc,SAAS0X,QAAS,EAA1C,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACkH,GAAA,EAAD,2BAEF,cAACsN,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACkH,GAAA,EAAD,4BAEF,cAACsN,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACkH,GAAA,EAAD,6BAEF,cAACsN,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACkH,GAAA,EAAD,yBAGJ,eAACsN,GAAA,EAAKjK,IAAN,CAAUkK,cAAc,SAAS0X,QAAS,EAA1C,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACzO,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAM,aAE5B,cAACsb,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACH,EAAA,EAAD,CACE1E,QAASy9B,GACTpjC,MAAOsjC,EACP34B,SAAU,SAAC/O,EAAGiU,GACRA,EAAE7P,OACJ+jC,EAASl0B,EAAE7P,MAAMiN,iBAKzB,cAAC+R,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACH,EAAA,EAAD,CACE1E,QAASw9B,GACTnjC,MAAOykC,EACP95B,SAAU,SAAC/O,EAAGiU,GACRA,EAAE7P,OACJ0kC,EAAS70B,EAAE7P,MAAMiN,iBAKzB,cAAC+R,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAAC4I,GAAA,EAAD,CACEpO,MAAOq+B,GAAcC,EAAOmB,EAAOjB,EAAMC,GACzCv7B,KAAK,SACLlI,MAAOwjC,EACP74B,SAAU,SAAC/O,EAAGiU,GACZq0B,GAASr0B,EAAE7P,QAEbuK,OAAK,SAIX,eAACyU,GAAA,EAAKjK,IAAN,CAAUkK,cAAc,SAAS0X,QAAS,EAA1C,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACzO,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAM,UAE5B,cAACsb,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACH,EAAA,EAAD,CACE1E,QAASy9B,GACTpjC,MAAOsjC,EACP34B,SAAU,SAAC/O,EAAGiU,GACRA,EAAE7P,OACJ+jC,EAASl0B,EAAE7P,MAAMiN,iBAKzB,cAAC+R,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAAvB,SACE,cAACH,EAAA,EAAD,CACE1E,QAASw9B,GACTnjC,MAAOykC,EACP95B,SAAU,SAAC/O,EAAGiU,GACRA,EAAE7P,OACJ0kC,EAAS70B,EAAE7P,MAAMiN,iBAKzB,cAAC+R,GAAA,EAAKE,OAAN,CAAa1U,UAAU,SAASm6B,WAAS,EAAzC,SACE,cAACvxB,GAAA,EAAD,CACEpO,MAAOq+B,GAAcC,EAAOmB,EAAOjB,EAAMC,GACzCv7B,KAAK,SACLlI,MAAOyjC,EACP94B,SAAU,SAAC/O,EAAGiU,GACZo0B,GAASp0B,EAAE7P,QAEbuK,OAAK,aA0FFq6B,GA7EG,SAAC,GAAgD,IAA9CC,EAA6C,EAA7CA,SAAUC,EAAmC,EAAnCA,aAAmC,EACxCv3B,mBAAiB,IADuB,mBACzDvR,EADyD,KACnDyY,EADmD,OAExClH,qBAFwC,mBAEzDrF,EAFyD,KAEnD68B,EAFmD,OAGlCx3B,qBAHkC,mBAGzDzC,EAHyD,KAGhD+4B,EAHgD,KAoBhE,OAhBAlqB,qBAAU,WACR,GAAI7O,GAAoB,KAAT5C,GAAwB,KAATlM,EAAa,CACzC,IAAImiC,EAA0B,CAC5B5hC,SAAUuoC,EAAeA,EAAavoC,SAAW,GACjDC,UlDvRuB,QkDwRvBR,KAAMA,EACN02B,YAAa,GACb5nB,QAASA,GAEX+5B,EAAS1G,QACA2G,IACTrwB,EAAQqwB,EAAa9oC,MACrB+oC,EAAQD,EAAah6B,QAAQq5B,cAC7BN,EAAWiB,EAAah6B,YAEzB,CAAC9O,EAAMkM,EAAM4C,EAAS+5B,EAAUC,IAEjC,eAAC9lB,GAAA,EAAD,WACE,eAACA,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,QAAvB,SACE,cAACkH,GAAA,EAAD,CAAO5R,KAAK,QAAZ,oBAEF,cAACkf,GAAA,EAAKE,OAAN,UACE,cAAC9L,GAAA,EAAD,CAAOzI,SAAU,SAAC/O,EAAGiU,GAAJ,OAAU4E,EAAQ5E,EAAE7P,QAAQA,MAAOhE,EAAMkM,KAAK,cAGnE,eAAC8W,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,QAAvB,SACE,cAACkH,GAAA,EAAD,CAAO5R,KAAK,QAAZ,2BAEF,cAACkf,GAAA,EAAKE,OAAN,UACE,cAAC9L,GAAA,EAAD,SAGJ,eAAC4L,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,QAAvB,SACE,cAACkH,GAAA,EAAD,CAAO5R,KAAK,QAAZ,0BAEF,cAACkf,GAAA,EAAKE,OAAN,UACE,cAAC8lB,GAAA,EAAD,CACEjmC,QAAkB,wBAATmJ,EACT6G,MAAO,eACPpE,SAAU,SAAC/O,EAAGiU,GACRA,EAAE9Q,SACJgmC,EAAQ,4BAKhB,cAAC/lB,GAAA,EAAKE,OAAN,UACE,cAAC8lB,GAAA,EAAD,CACEjmC,QAAkB,2BAATmJ,EACT6G,MAAO,UACPpE,SAAU,SAAC/O,EAAGiU,GACRA,EAAE9Q,SACJgmC,EAAQ,kCAMlB,eAAC/lB,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACY,wBAATzuB,GACC,cAAC,GAAD,CAAmB27B,WAAYA,EAAYC,eAAc,OAAEgB,QAAF,IAAEA,OAAF,EAAEA,EAAch6B,UAEjE,2BAAT5C,GACC,cAAC,GAAD,CAAuB27B,WAAYA,EAAYC,eAAc,OAAEgB,QAAF,IAAEA,OAAF,EAAEA,EAAch6B,iBCzUjFm6B,GAAa,SAAC5U,GAClB,MAAmB,KAAfA,EAAMr0B,OAGHq0B,EAAMvlB,SAAWo6B,GAAa7U,EAAMvlB,WAGvCo6B,GAAe,SAACp6B,GACpB,QAAKA,IAGwB,2BAAzBA,EAAQq5B,cAfiBR,EAgBG74B,EAAQy5B,eAhBOf,EAgBS14B,EAAQu5B,cAhBHZ,EAgBkB34B,EAAQw5B,iBAfhFX,EAAWH,GAAQG,EAAWF,GAAQE,EAAWH,GAAQG,EAAWF,IAgBvC,wBAAzB34B,EAAQq5B,eA5BC,SAACb,EAAeC,EAAeC,EAAcC,GACjE,OAAQF,GACN,QACE,OAAO,EACT,IAAK,YACH,OAAOC,GAAQC,EACjB,IAAK,YACH,OAAOD,GAAQC,GAsBTJ,CAAcv4B,EAAQmX,aAAcnX,EAAQs5B,eAAgBt5B,EAAQu5B,cAAev5B,EAAQw5B,iBAlBzE,IAACX,EAAkBH,EAAcC,GAiEhD0B,GAzCar7B,aAAS,WAAO,IAClC1H,EAAcI,IAAdJ,UACA4/B,EAAmBC,KAAnBD,eACFl5B,EAAQrG,qBAAWsG,IAHgB,EAIfwE,qBAJe,mBAIlC8iB,EAJkC,KAI3BwU,EAJ2B,KAKnCO,EAAQ,uCAAG,sBAAA/gC,EAAA,0DACXgsB,IAAS4U,GAAW5U,GADT,gCAEQ5qB,EAAY,oBAAqBrD,EAAU6G,mBAAoB,CAClF1D,KAAM8qB,EACN/qB,OAAQ,OACRO,KAAK,IALM,cAQAf,IACXgE,EAAMgL,QAAQ,mBACdkuB,EAAea,kBAAiB,GAChC9uB,aAAO,kBAEPjL,EAAM9D,MAAM,4BAbD,2CAAH,qDAkBd,OACE,eAAC+9B,GAAA,EAAD,CAAO5uB,KAAM6tB,EAAeL,YAA5B,UACE,cAACoB,GAAA,EAAMv5B,OAAP,2BACA,cAACu5B,GAAA,EAAMt5B,QAAP,UACE,cAAC,GAAD,CAAWo7B,SAAUA,MAEvB,eAAC9B,GAAA,EAAMG,QAAP,WACE,cAAC10B,GAAA,EAAD,CAAQgC,UAAQ,EAACxB,WAAYqhB,GAAS4U,GAAW5U,IAAS90B,QAAS6pC,EAAnE,oBAGA,cAAC52B,GAAA,EAAD,CAAQ+H,UAAQ,EAAChb,QAAS,kBAAMymC,EAAeqD,iBAAgB,IAA/D,6BC9DFC,GAAoC,SACxCjV,EACA4J,GACI,IAAD,EACH,IAAKA,EACH,MAAO,GAGT,IAAIsL,EAAoBtL,EAAKviB,GAAeuiB,EAAG9X,MAAQ,KAA1B,UAAgCtK,GAAiBoiB,EAAG9X,aAApD,aAAgC,EAA2BpT,OAAQ,GAChG,MAAO,6CAA+CsH,KAAEC,WAAF,OAAa+Z,QAAb,IAAaA,OAAb,EAAaA,EAAOr0B,MAAQ,SAAWupC,GA8ChFC,GA3CiB17B,aAAS,YAA6D,IAA1DpI,EAAyD,EAAzDA,QAAS2uB,EAAgD,EAAhDA,MAAO1N,EAAyC,EAAzCA,KACpD7Z,EAAQrG,qBAAWsG,IACjBi5B,EAAmBC,KAAnBD,eACA5/B,EAAcI,IAAdJ,UACJ63B,EAAyCtX,EAAKC,iBAAiBhY,MAAK,SAACqvB,GACvE,YAAmFt4B,IAA5Es4B,EAAGhI,UAAUrnB,MAAK,SAACvG,GAAD,OAAsBA,EAAE9H,YAAF,OAAe8zB,QAAf,IAAeA,OAAf,EAAeA,EAAO9zB,gBAsBvE,OACE,eAACwmC,GAAA,EAAD,CAAO5uB,KAAM6tB,EAAeF,gBAAiBhiC,KAAK,OAAOkjC,OAAO,WAAW/mC,UAAU,OAArF,UACE,cAAC8mC,GAAA,EAAMv5B,OAAP,CAAc7F,MAAO,CAAED,MAAO,SAA9B,2BACA,cAACq/B,GAAA,EAAMt5B,QAAP,UAAgB67B,GAAkCjV,EAAO4J,KACzD,eAAC8I,GAAA,EAAMG,QAAP,WACE,cAAC10B,GAAA,EAAD,CAAQjT,QAAS,SAACK,GAAD,OAAOomC,EAAeyD,qBAAoB,IAAQlvB,UAAQ,EAA3E,oBAGA,cAAC/H,GAAA,EAAD,CAAQjT,QAAS,SAACK,GAAD,OA5BN,WAAO,IAAD,EACrB,UAAA6J,EACE,qCAA+Bw0B,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAI19B,UAAW,oBAA9C,OAAmE8zB,QAAnE,IAAmEA,OAAnE,EAAmEA,EAAO9zB,UAAW,SACrF6F,EAAU6G,mBAEV,CAAE3D,OAAQ,kBAJZ,SAMIV,MAAK,SAACC,GACNhJ,QAAQC,IAAI4F,GACZqS,aAAO,gBAAD,OAAiBrS,IACvBqS,aAAO,iBACPlP,EAAIG,MAAQ8D,EAAM9D,MAAM,8BAAgC8D,EAAMgL,QAAQ,mCACtEkuB,EAAeyD,qBAAoB,MAEpCp2B,OAAM,SAACyzB,GACNh6B,EAAM9D,MAAM,+BACZg9B,EAAeyD,qBAAoB,MAYXC,IAAYl1B,UAAQ,EAA5C,8BCiBOm1B,GAjEW77B,aAAS,YAAiD,IAA9CpI,EAA6C,EAA7CA,QAAS2uB,EAAoC,EAApCA,MACvCvnB,EAAQrG,qBAAWsG,IACjB3G,EAAcI,IAAdJ,UACA4/B,EAAmBC,KAAnBD,eAHyE,EAIjDz0B,qBAJiD,mBAI1E4wB,EAJ0E,KAIhEyH,EAJgE,KAUjF,GALAjsB,qBAAU,WACJ0W,IAAU8N,GACZyH,EAAYlnC,KAAKC,MAAMD,KAAKE,UAAUyxB,OAEvC,CAACA,EAAO8N,KACN9N,EACH,OAAO,6BAGT,IAAMwV,EAAI,uCAAG,sBAAAxhC,EAAA,yDACXxI,QAAQC,IAAI,cAAeqiC,IACvBA,EAFO,gCAGY14B,EAAY,qBAAsBrD,EAAU6G,mBAAoB,CACnF1D,KAAM44B,EACN74B,OAAQ,MACRO,KAAK,IANE,cASIf,IACXgE,EAAMgL,QAAQ,oBACdkuB,EAAe8D,eAAc,GAC7BF,OAAYjkC,GACZoS,aAAO,iBACPA,aAAO,gBAAkBrS,IAEzBoH,EAAM9D,MAAM,8BAhBL,2CAAH,qDAoBV,OACE,eAAC+9B,GAAA,EAAD,CAAO5uB,KAAM6tB,EAAeJ,UAA5B,UACE,cAACmB,GAAA,EAAMv5B,OAAP,yBACA,cAACu5B,GAAA,EAAMt5B,QAAP,UACE,cAACuV,GAAA,EAAD,UACE,cAACA,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,SACE,cAAC3X,GAAA,EAAKE,OAAN,UACE,cAAC,GAAD,CAAW2lB,SAAUe,EAAad,aAAczU,YAKxD,eAAC0S,GAAA,EAAMG,QAAP,WACE,eAAC10B,GAAA,EAAD,CAAQgC,UAAQ,EAACjV,QAAS,kBAAMsqC,KAAhC,UACG,IADH,YAIA,cAACr3B,GAAA,EAAD,CACE+H,UAAQ,EACRhb,QAAS,WACPymC,EAAe8D,eAAc,GAC7BF,OAAYjkC,IAJhB,6BCZFokC,GAAS,SAAC,GAA6B,IAA3BlnC,EAA0B,EAA1BA,OACZkuB,EAAalW,GAAchY,EAAOQ,YAAaR,EAAOO,UAAWP,EAAO7C,MAC5E,OACE,cAACqQ,EAAA,EAAD,CACEvB,QACE,cAACmF,GAAA,EAAD,CAASzF,UAAU,SAAS7G,MAAO,CAAEynB,QAAS,EAAG/Q,OAAQ,GAAzD,SACE,cAAC,GAAD,CAAY1a,WAAYd,EAAOQ,gBAHrC,SAOG0tB,KASDiZ,GAAiB,SAAC,GAAsC,IAApCl7B,EAAmC,EAAnCA,QACxB,GAA6B,wBAAzBA,EAAQq5B,aAAwC,CAClD,IAAI8B,EACyB,cAA3Bn7B,EAAQs5B,eACJ,MAC2B,cAA3Bt5B,EAAQs5B,eACR,MACAt5B,EAAQs5B,eAEd,OACE,eAACn0B,GAAA,EAAD,CAASxM,UAAQ,EAAjB,UACE,eAACwM,GAAA,EAAD,CAASxM,UAAQ,EAAjB,UACE,cAAC1H,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAM,WAC1B,+BAAO2S,KAAEC,WAAWxL,EAAQmX,cAAgBgkB,EAASn7B,EAAQu5B,mBAE/D,eAACp0B,GAAA,EAAD,CAASxM,UAAQ,EAAjB,UACE,cAAC1H,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAM,QAC1B,+BAAO2S,KAAEC,WAAWxL,EAAQmX,cAAgBgkB,EAASn7B,EAAQw5B,uBAI9D,MAA6B,2BAAzBx5B,EAAQq5B,aAEf,eAACl0B,GAAA,EAAD,CAASxM,UAAQ,EAAjB,UACE,eAACwM,GAAA,EAAD,CAASxM,UAAQ,EAAjB,UACE,cAAC1H,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAM,WAC1B,iCACG2S,KAAEC,WAAWxL,EAAQmX,cAAgB,IAAMnX,EAAQy5B,eADtD,SACgFz5B,EAAQu5B,oBAG1F,eAACp0B,GAAA,EAAD,CAASxM,UAAQ,EAAjB,UACE,cAAC1H,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAM,QAC1B,iCACG2S,KAAEC,WAAWxL,EAAQmX,cAAgB,IAAMnX,EAAQy5B,eADtD,SACgFz5B,EAAQw5B,wBAOzF,cAACr0B,GAAA,EAAD,KAGHi2B,GAAQ,SAAC,GAAuD,IAArD7V,EAAoD,EAApDA,MAAOvqB,EAA6C,EAA7CA,OAAQm0B,EAAqC,EAArCA,GAAIkM,EAAiC,EAAjCA,eAE1BnE,EAAmBC,KAAnBD,eACJxP,EAAQyH,EAAKviB,GAAeuiB,EAAG9X,MAAQ,GACvCmX,EAAUW,EAAKpiB,GAAiBoiB,EAAG9X,MAAQ,CAAEnK,WAAY,EAAGjJ,MAAO,IACnEkT,EhD3DkC,SAACA,GACvC,IADkE,EAC9DmkB,EAA2B,IAAIC,IAD+B,cAE1CpkB,GAF0C,IAElE,2BAAsC,CAAC,IAA9BrL,EAA6B,QAChCA,IAAgB1P,GAClBk/B,EAAY1mB,IAAInZ,IACPqQ,IAAgB3P,GACzBm/B,EAAY1mB,IAAIpZ,IACPsQ,IAAgB7P,IAA0B6P,IAAgB7P,GACnEq/B,EAAY1mB,IAAIrZ,IACPuQ,IAAgB5P,GACzBo/B,EAAY1mB,IAAIlZ,IACPoQ,IAAgB/P,KACzBu/B,EAAY1mB,IAAIlZ,IAChB4/B,EAAY1mB,IAAInZ,IAChB6/B,EAAY1mB,IAAIpZ,MAd8C,8BAkBlE,OAAOe,MAAM+V,KAAKgpB,GgDyCCE,CACjBxgC,EACIA,EAAOmc,aAAata,KAAI,SAAC4+B,GACvB,OAAOA,EAAMr+B,QAEf,IAEFjK,EAA4B,GAYhC,OAXIg8B,GACFhY,EACGta,KAAI,SAACO,GACJ,OAAO+xB,EAAGh8B,QAAQ2M,MAAK,SAAC/L,GAAD,OAA4BA,EAAOQ,cAAgB6I,QAE3E7J,SAAQ,SAACQ,GACJA,GACFZ,EAAQM,KAAKM,MAKnB,eAACiW,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,UACE,cAAC/E,GAAA,EAAD,CAASxM,UAAQ,EAAjB,SACE,sBAAME,MAAO,CAAE4E,SAAU,YAAzB,SAAwC8nB,EAAMr0B,WAGlD,cAAC8Y,GAAA,EAAME,KAAP,UACE,cAAC,GAAD,CAAgBlK,QAASulB,EAAMvlB,YAEjC,cAACgK,GAAA,EAAME,KAAP,UACE,cAAC/E,GAAA,EAAD,CAASxM,UAAQ,EAAjB,SAAmB+uB,EAAQ,IAAM8G,EAAQvqB,UAE3C,cAAC+F,GAAA,EAAME,KAAP,UACE,cAAC/E,GAAA,EAAD,CAASxM,UAAQ,EAAjB,SACGxF,EAAQ0J,KAAI,SAAC9I,EAAwBoC,GAAzB,OACX,cAAC6T,GAAA,EAAME,KAAP,UACE,cAAC,GAAD,CAAQnW,OAAQA,KADDoC,UAMvB,cAAC6T,GAAA,EAAME,KAAP,UACE,cAAC3K,EAAA,EAAD,CAAUm8B,MAAI,EAACplC,UAAU,OAAO2L,KAAK,sBAArC,SACE,eAAC1C,EAAA,EAASnP,KAAV,WACE,eAACmP,EAAA,EAASlP,KAAV,CACEI,QAAS,SAACK,GACRuqC,EAAe9V,GACX4J,GACFp+B,QAAQC,IAAI,uBACZkmC,EAAeyD,qBAAoB,IAEnCzD,EAAea,kBAAiB,IAPtC,UAWE,cAAC9mC,EAAA,EAAD,CAAMC,KAAMi+B,EAAK,eAAiB,UACjCA,EAAK,aAAe,uBAEvB,eAAC5vB,EAAA,EAASlP,KAAV,CACEI,QAAS,SAACK,GACRuqC,EAAe9V,GACf2R,EAAe8D,eAAc,IAHjC,UAME,cAAC/pC,EAAA,EAAD,CAAMC,KAAK,WANb,2BA0HGyqC,GApGG38B,cAAS,YAA+B,IAA5B6Y,EAA2B,EAA3BA,KAA2B,EACtBngB,IAAzBF,EAD+C,EAC/CA,UAAWF,EADoC,EACpCA,UACX4/B,EAAmBC,KAAnBD,eAF+C,EAGjBz0B,qBAHiB,mBAGhDm5B,EAHgD,KAGnCP,EAHmC,OAIvBn9B,aAAO,iBAAiB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAA9E2oB,EAJyC,EAI/CzsB,KAAcH,EAJiC,EAIjCA,MAChBtD,EAAUY,EAAUyB,aAE1B,GADAlI,QAAQC,IAAIkJ,IACP2d,EACH,OAAO,cAACrZ,EAAA,EAAD,CAAQzF,QAAM,IAGvBhI,QAAQC,IAAI,SAAU81B,GACtB,IAAM+U,EAAgC,GActC,OAbAhkB,EAAKC,iBAAiBvkB,SAAQ,SAAC47B,GAAD,OAC5B0M,EAAepoC,KAAf,MAAAooC,EAAc,aACT1M,EAAGhI,UAAUtqB,KAAI,SAACtD,GACnB,MAAO,CAAEse,KAAMA,EAAMsX,GAAIA,EAAI5J,MAAOhsB,WAI1CsiC,EAAepxB,MAAK,SAAClR,EAAgBmR,GACnC,OAAInR,EAAE41B,GAAG19B,WAAaiZ,EAAEykB,GAAG19B,SAClB8H,EAAEgsB,MAAM9zB,SAAWiZ,EAAE6a,MAAM9zB,SAAW,GAAK,EAE7C8H,EAAE41B,GAAG19B,SAAWiZ,EAAEykB,GAAG19B,SAAW,GAAK,KAE1CyI,EACK,cAAC8H,GAAA,EAAD,CAASyJ,UAAQ,EAAjB,mCAEJqb,GAGL/1B,QAAQC,IAAI81B,GACZ/1B,QAAQC,IAAI6qC,GAEZhkB,EAAKC,iBAAiBrN,MAAK,SAAClR,EAA2BmR,GACrD,IAAIoxB,EAAW/uB,GAAiBxT,EAAE8d,MAC9B0kB,EAAWhvB,GAAiBrC,EAAE2M,MAClC,OAAI9d,EAAE8d,KAAKxK,YAAcnC,EAAE2M,KAAKxK,UACvBivB,EAAS5uB,UAAY6uB,EAAS7uB,UAAY,GAAK,EAE/C3T,EAAE8d,KAAKxK,UAAYnC,EAAE2M,KAAKxK,UAAY,GAAK,KAIpD,qCAEE,eAAC7C,GAAA,EAAD,CAAOa,QAAM,EAAClS,UAAQ,EAACqjC,YAAU,EAACpjC,MAAM,OAAxC,UACE,cAACoR,GAAA,EAAMtL,OAAP,UACE,eAACsL,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAMc,WAAP,oBACA,cAACd,GAAA,EAAMc,WAAP,6BACA,cAACd,GAAA,EAAMc,WAAP,wBACA,cAACd,GAAA,EAAMc,WAAP,8BACA,cAACd,GAAA,EAAMc,WAAP,SAGJ,cAACd,GAAA,EAAMtL,OAAP,UACE,cAACsL,GAAA,EAAMC,IAAP,UACE,cAACD,GAAA,EAAMc,WAAP,CAAkBoa,QAAQ,IAA1B,iCAGJ,cAAClb,GAAA,EAAMe,KAAP,UACG8wB,EAAeh/B,KAAI,SAACo/B,GACnB,IAAIjhC,EAAqCihC,EAAI9M,GAAGlI,gBAAgBnnB,MAC9D,SAACo8B,GAAD,OAAuBA,EAAEzqC,WAAawqC,EAAI1W,MAAM9zB,YAElD,OAAO,cAAC,GAAD,CAAO8zB,MAAO0W,EAAI1W,MAAOvqB,OAAQA,EAAQm0B,GAAI8M,EAAI9M,GAAIkM,eAAgBA,SAGhF,cAACrxB,GAAA,EAAMtL,OAAP,UACE,cAACsL,GAAA,EAAMC,IAAP,UACE,cAACD,GAAA,EAAMc,WAAP,CAAkBoa,QAAQ,IAA1B,4BAGJ,cAAClb,GAAA,EAAMe,KAAP,UACG+b,GAAUA,EAAOjqB,KAAI,SAAC0oB,GAAD,OAA0B,cAAC,GAAD,CAAOA,MAAOA,EAAO8V,eAAgBA,SAEvF,cAACrxB,GAAA,EAAMtL,OAAP,UACE,cAACsL,GAAA,EAAMC,IAAP,UACE,eAACD,GAAA,EAAMc,WAAP,CACEoa,QAAQ,IACRz0B,QAAS,WACPymC,EAAeqD,iBAAgB,IAHnC,UAME,cAACtpC,EAAA,EAAD,CAAMC,KAAK,cAAc0H,MAAM,UANjC,mBADa,mBAanB,cAAC,GAAD,IACA,cAAC,GAAD,CAAsBhC,QAASA,EAAS2uB,MAAOqW,EAAa/jB,KAAMA,EAAMX,SAAUW,EAAK3mB,OACvF,cAAC,GAAD,CAAyB0F,QAASA,EAAS2uB,MAAOqW,EAAa/jB,KAAMA,IACrE,cAAC,GAAD,CAAmBjhB,QAASA,EAAS2uB,MAAOqW,QAjEvC,cAACp9B,EAAA,EAAD,CAAQzF,QAAM,O,8BC7NnBq+B,GAA+B,SAAClgB,EAAkBilB,GACtD,IAAKjlB,IAAailB,EAChB,MAAO,GAGT,IAAIla,EAAaka,EAAIpoC,OAASooC,EAAIpoC,OAAO7C,KAAO,GAAKkb,OAAO+vB,EAAI7nC,WAAW+X,SAAS,EAAG,KACvF,MACE,WACAd,KAAEC,WAAW2wB,EAAIpoC,OAASooC,EAAIpoC,OAAOQ,YAAc4nC,EAAIC,aAAeD,EAAIC,aAAa7nC,YAAc,IACrG,YACA0tB,EACA,aACA/K,GA+JWmlB,GAlJer9B,aAC5B,YAAwF,IAO5E,EAPTpI,EAAoF,EAApFA,QAASsgB,EAA2E,EAA3EA,SAAU4O,EAAiE,EAAjEA,QAASqW,EAAwD,EAAxDA,IAAKtkB,EAAmD,EAAnDA,KAAMykB,EAA6C,EAA7CA,WAClCt+B,EAAQrG,qBAAWsG,IACjB3G,EAAcI,IAAdJ,UAF6E,EAG3CmL,qBAH2C,mBAG9Ei0B,EAH8E,KAG/DC,EAH+D,OAIrCl0B,qBAJqC,mBAI9E60B,EAJ8E,KAI5DC,EAJ4D,KAMjFC,EAAoC,GACpC3f,IACF,UAAAA,EAAKC,wBAAL,SAAuBrN,MAAK,SAAClR,EAA2BmR,GAA5B,OAC1BnR,EAAE8d,KAAKvK,UAAYpC,EAAE2M,KAAKvK,UAAY,GAAK,KAE7C0qB,EAAkB3f,EAAKC,iBAAiBjb,KAAI,SAACjM,GAAsC,IAAD,IAC1E82B,GAAgB,OAAR92B,QAAQ,IAARA,GAAA,UAAAA,EAAUymB,YAAV,eAAgBxK,WACH,UAAvBjc,EAASymB,KAAKja,KACZxM,EAASymB,KAAKvK,UAAY,MAAQlc,EAASymB,KAAKxK,UAChDjc,EAASymB,KAAKxK,WAAajc,EAASymB,KAAKxK,UAAYjc,EAASymB,KAAKvK,WAAa,EAClF,EACE8a,GAAc,UAAAh3B,EAASymB,YAAT,eAAeja,MACR,UAAvBxM,EAASymB,KAAKja,KACZsqB,EAAQ,iBACRA,EAAQ,YAAcnc,KAAEksB,WAAW7mC,EAASymB,KAAKja,MAAMs6B,QAAQ,IAAK,KACtE,UACJ,MAAO,CACLriC,IAAKzE,EAASa,SACdyD,MAAOtE,EAASa,SAChB4N,KAAMuoB,EAENvQ,KAAMzmB,EAASymB,UAIrB,IAAI+W,EAA6B,GACjC,GAAIoJ,EAAgBlkC,OAAS,EAAG,CAC9B,IAAM1C,EAAW4mC,EAAgB13B,MAAK,SAACqsB,GAAD,OAA4BA,EAAO92B,MAAQiiC,KACjFlJ,EAAWoJ,EAAgBxlB,QACzB,SAAC2lB,GAAD,eACE,UAAAA,EAAEtgB,YAAF,eAAQvK,cAAR,OAAsBlc,QAAtB,IAAsBA,GAAtB,UAAsBA,EAAUymB,YAAhC,aAAsB,EAAgBvK,YACtC6qB,EAAEtgB,KAAKja,OAASxM,EAASymB,KAAKja,MAC9Bu6B,EAAEtgB,KAAKxK,YAAcjc,EAASymB,KAAKxK,aAIzC,IAAM+qB,EAAM,uCAAG,wCAAAr+B,EAAA,yDACR4iC,EADQ,oDAITI,EAJS,UAIGJ,EAAIpoC,cAJP,aAIG,EAAYtC,SACtBqmC,EAAcpB,GAAgCY,EAC/CiF,EANQ,iCAOiB5hC,EAAY,uBAAD,OAAwB/D,GAAWU,EAAU6G,mBAAoB,CACtG3D,OAAQ,MACRZ,QAAS,CACP,eAAgB,oBAElBa,KAAM,CACJnG,UAAW6nC,EAAI7nC,UACfC,YAAW,UAAE4nC,EAAIC,oBAAN,aAAE,EAAkB7nC,aAEjCwG,KAAK,IAhBI,cAOLrB,EAPK,iBAkBUA,EAASO,OAlBnB,SAmBX,QADMlG,EAlBK,cAmBX,IAAIA,OAAJ,EAAIA,EAAQtC,WACVuM,EAAMgL,QAAQ,wBACduzB,EAAYxoC,EAAOtC,UACduM,EAAM9D,MAAM,gCAtBR,WAwBRqiC,EAxBQ,wBAyBXv+B,EAAM9D,MAAM,4BAzBD,2BA4Bb,UAAAS,EAAY,uBAAD,OACc/D,EADd,2BACwC2lC,EADxC,2BACoEzE,GAC7ExgC,EAAU6G,mBACV,CACE3D,OAAQ,eAJZ,SAOIV,MAAK,SAACC,GACNA,EAAIG,MACA8D,EAAM9D,MAAM,sCAAwCH,EAAIiB,OAAS,IAAMjB,EAAII,YAC3E6D,EAAMgL,QAAQ,iCAClBuuB,GAAoB,GACpB+E,GAAW,GACXrzB,aAAO,gBAAD,OAAiBrS,IACvBqS,aAAO,uBAAD,OAAwBrS,OAE/B2N,OAAM,SAACyzB,GACNh6B,EAAM9D,MAAM,6BA7CH,4CAAH,qDAiDZ,OACE,eAAC+9B,GAAA,EAAD,CAAO5uB,KAAMyc,EAAS9wB,KAAK,OAAOkjC,QAAM,EAAC/mC,UAAU,OAAnD,UACE,cAAC8mC,GAAA,EAAMv5B,OAAP,UAAe04B,GAA6BlgB,EAAUilB,KACtD,cAAClE,GAAA,EAAMt5B,QAAP,CAAe9F,MAAO,CAAED,MAAO,SAA/B,SACE,eAACsb,GAAA,EAAD,CAAMikB,WAAS,EAACtM,QAAS,EAAzB,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAApB,SACE,cAACie,GAAA,EAAD,CACEhX,OAAK,EACLD,YAAY,mBACZ3E,QAAS28B,EAAgBxlB,QAAO,SAACphB,GAAD,aAAkD,KAA/B,UAAAA,EAASymB,YAAT,eAAerK,gBAClEnN,SAAU,SAAC/O,EAAD,GAAmB,IAAboE,EAAY,EAAZA,MACdyhC,OAAiB9/B,GACjB0gC,EAAoBriC,IAEtBA,MAAOoiC,MAGX,cAACpjB,GAAA,EAAKE,OAAN,CACE5b,MAAO,EACPK,MAAO,CACLuI,OAAQ,QACRzB,UAAW,QACXijB,UAAW,oDALf,SAQE,cAAC,GAAD,CAAewL,SAAUA,EAAUsI,cAAeA,EAAeC,iBAAkBA,WAIzF,eAACsB,GAAA,EAAMG,QAAP,WACE,cAAC10B,GAAA,EAAD,CACEjT,QAAS,SAACK,GACR6lC,OAAiB9/B,GACjBylC,GAAW,IAEb7wB,UAAQ,EALV,oBASA,cAAC/H,GAAA,EAAD,CACEjT,QAAS,SAACK,GACJwmC,EAAkBM,IACjB55B,EAAM9D,MAAM,2BAEnBwL,UAAQ,EALV,8BCtJJ82B,GAAmB,CACvB,CAAEnnC,IAAK,OAAQgK,KAAM,aAAcnK,MAAO,QAC1C,CAAEG,IAAK,SAAUgK,KAAM,SAAUnK,MAAO,UACxC,CAAEG,IAAK,WAAYgK,KAAM,WAAYnK,MAAO,YAC5C,CAAEG,IAAK,YAAagK,KAAM,YAAanK,MAAO,cAG1CunC,GAAW,SAACC,EAAsB7nC,GACtC,OAAO2W,sBAAW3W,GAAc,IAAM6nC,GAGlCC,GAAgB,SAAC/nC,GACrB,OAAOA,GAAYA,GAAY,OAASA,GAAY,GAEhDgoC,GAAc,SAAC/nC,EAAoBD,EAAkBzB,GACzD,QAAKwpC,GAAc/nC,SAMKiC,IAHL1D,EAAQ2M,MAAK,SAAC5K,GAA2B,IAAD,IACzD,OAAO,UAAAA,EAAMnB,cAAN,eAAcQ,eAAgBM,IAAc,UAAAK,EAAMnB,cAAN,eAAcO,aAAcM,EAAW,QAiI/EioC,GA7Hc79B,aAC3B,YAA6F,IAA1FpI,EAAyF,EAAzFA,QAASzD,EAAgF,EAAhFA,QAAS2pC,EAAuE,EAAvEA,iBAAkBC,EAAqD,EAArDA,oBAC/B/+B,EAAQrG,qBAAWsG,IACjB3G,EAAcI,IAAdJ,UAFkF,EAGlEmL,mBAAiB,IAHiD,mBAGnFvR,EAHmF,KAG7EyY,EAH6E,OAI1DlH,mBAAiB,GAJyC,mBAInF7N,EAJmF,KAIzEooC,EAJyE,OAKtDv6B,mBAAiB,IALqC,mBAKnF5N,EALmF,KAKvEooC,EALuE,KAOpFC,EAAY,uCAAG,8BAAA3jC,EAAA,yDACdojC,GAAc/nC,GADA,uBAEjBoJ,EAAM9D,MAAM,qBAAuBtF,GAFlB,6BAKd4nC,GAAiB3/B,KAAI,SAAChC,GAAD,OAAkBA,EAAQ3F,SAAOmI,SAASxI,GALjD,uBAMjBmJ,EAAM9D,MAAM,uBAAyBrF,GANpB,gCAUH,MADZ6T,EAAUxX,KAEZwX,EAAU+zB,GAAS7nC,EAAUC,IAGzBsoC,EAA4B,CAChC1rC,SAAU,GACVC,UAAWiK,GACXrH,UAAWM,EAAW,IACtBL,YAAaM,EACb3D,KAAMwX,GAnBW,UAsBI/N,EAAY,uBAAD,OAAwB/D,GAAWU,EAAU6G,mBAAoB,CACjG3D,OAAQ,MACRO,KAAK,EACLN,KAAM0iC,IAzBW,eA4BNnjC,IACXgE,EAAMgL,QAAQ,oBACdpS,GAAWqS,aAAO,gBAAD,OAAiBrS,IAClCA,GAAWqS,aAAO,uBAAD,OAAwBrS,IACzCmmC,GAAoB,GACpBpzB,EAAQ,IACRqzB,EAAY,GACZC,EAAc,KAEdj/B,EAAM9D,MAAM,0CArCK,4CAAH,qDAyClB,OACE,eAAC+9B,GAAA,EAAD,CAAO5uB,KAAMyzB,EAAb,UACE,cAAC7E,GAAA,EAAMv5B,OAAP,kCACA,cAACu5B,GAAA,EAAMt5B,QAAP,UACE,eAACuV,GAAA,EAAD,CAAMC,cAAc,MAAMzU,UAAU,YAApC,UACE,eAACwU,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,UACE,cAACxN,GAAA,EAAD,qBAEF,cAACsN,GAAA,EAAKE,OAAN,CAAaylB,WAAS,EAAtB,SACE,cAACvxB,GAAA,EAAD,CACE9I,YAAai9B,GAAS7nC,EAAUC,GAChCgL,SAAU,SAAC/O,EAAGuJ,GACZsP,EAAQtP,EAAKnF,QAEfA,MAAOhE,SAIb,eAACgjB,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,UACE,cAACxN,GAAA,EAAD,8BAEF,cAACsN,GAAA,EAAKE,OAAN,CAAaylB,WAAS,EAAtB,SACE,cAACvxB,GAAA,EAAD,CACElL,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,IACPA,EAAKnF,OAAS,OAAO8nC,GAAa3iC,EAAKnF,QAE9CA,MAAON,MAGX,cAACsf,GAAA,EAAKE,OAAN,CAAaylB,WAAS,EAAtB,SACE,cAACvxB,GAAA,EAAD,CAAOrE,MAAO,qBAAsBC,UAAQ,EAAChP,MAAON,EAAW,WAGnE,eAACsf,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,UACE,cAACxN,GAAA,EAAD,4BAEF,cAACsN,GAAA,EAAKE,OAAN,CAAaylB,WAAS,EAAtB,SACE,cAACt6B,EAAA,EAAD,CACEM,SAAU,SAACjF,EAAOwiC,GACZA,EAAQloC,OACV+nC,EAAcG,EAAQloC,MAAQkoC,EAAQloC,MAAMiN,WAAa,KAG7D3C,YAAa,qBACb3E,QAAS2hC,eAMnB,eAACvE,GAAA,EAAMG,QAAP,WACE,eAAC10B,GAAA,EAAD,CAAQgC,UAAQ,EAACxB,UAAW04B,GAAY/nC,EAAYD,EAAUzB,GAAU1C,QAASysC,EAAjF,UACG,IADH,SAIA,cAACx5B,GAAA,EAAD,CACE+H,UAAQ,EACRhb,QAAS,WACPssC,GAAoB,GACpBE,EAAc,IACdtzB,EAAQ,IACRqzB,EAAY,IANhB,6BClIJxC,GAAoC,SAAC2B,GAAqC,IAAD,EAC7E,IAAKA,EACH,MAAO,GAGT,IAAIla,EAAqBka,EAAIpoC,OAASooC,EAAIpoC,OAAO7C,KAAO,GAAKkb,OAAO+vB,EAAI7nC,WAAW+X,SAAS,EAAG,KAC3FxX,EAAqBsnC,EAAIpoC,OAASooC,EAAIpoC,OAAOQ,YAAc4nC,EAAIC,aAAeD,EAAIC,aAAa7nC,YAAc,GAC7GkmC,EAAoB0B,EAAIhZ,gBACxBvW,GAAeuvB,EAAIhZ,gBAAgB9L,MAAQ,KAA3C,UAAiDtK,GAAiBovB,EAAIhZ,gBAAgB9L,aAAtF,aAAiD,EAA4CpT,OAC7F,GACJ,MACE,uCACAsH,KAAEC,WAAW3W,GACb,YACCotB,EAAa,IAAMA,EAAa,IAAM,IACvC,QACAwY,GA0CW4C,GAtCkBr+B,aAAS,YAA2E,IAAxEpI,EAAuE,EAAvEA,QAASulC,EAA8D,EAA9DA,IAAKrW,EAAyD,EAAzDA,QAASwW,EAAgD,EAAhDA,WAC5Dt+B,EAAQrG,qBAAWsG,IACjB3G,EAAcI,IAAdJ,UAoBR,OACE,eAAC2gC,GAAA,EAAD,CAAO5uB,KAAMyc,EAAS9wB,KAAK,OAAOkjC,OAAO,WAAW/mC,UAAU,OAA9D,UACE,cAAC8mC,GAAA,EAAMv5B,OAAP,CAAc7F,MAAO,CAAED,MAAO,SAA9B,2BACA,cAACq/B,GAAA,EAAMt5B,QAAP,UAAgB67B,GAAkC2B,KAClD,eAAClE,GAAA,EAAMG,QAAP,WACE,cAAC10B,GAAA,EAAD,CAAQjT,QAAS,SAACK,GAAD,OAAOwrC,GAAW,IAAQ7wB,UAAQ,EAAnD,oBAGA,cAAC/H,GAAA,EAAD,CAAQjT,QAAS,SAACK,GAAD,OA3BN,WAAO,IAAD,MACrB,UAAA6J,EAAY,uBAAD,OACc/D,EADd,kCACwCulC,QADxC,IACwCA,GADxC,UACwCA,EAAKpoC,cAD7C,aACwC,EAAatC,SADrD,kCACgF0qC,QADhF,IACgFA,GADhF,UACgFA,EAAKhZ,uBADrF,aACgF,EAAsB1xB,UAE/G6F,EAAU6G,mBAEV,CAAE3D,OAAQ,kBALZ,SAOIV,MAAK,SAACC,GACNkP,aAAO,gBAAD,OAAiBrS,IACvBqS,aAAO,uBAAD,OAAwBrS,IAC9BmD,EAAIG,MAAQ8D,EAAM9D,MAAM,+BAAiC8D,EAAMgL,QAAQ,oCACvEszB,GAAW,MAEZ/3B,OAAM,SAACyzB,GACNh6B,EAAM9D,MAAM,4BACZoiC,GAAW,MAWa1B,IAAYl1B,UAAQ,EAA5C,8BCJO43B,GAhDYt+B,aAAS,YAAwE,IAArEpI,EAAoE,EAApEA,QAAS7C,EAA2D,EAA3DA,OAAQ+xB,EAAmD,EAAnDA,QAASwW,EAA0C,EAA1CA,WACzDt+B,EAAQrG,qBAAWsG,IACjB3G,EAAcI,IAAdJ,UAFiG,EAGjFmL,qBAHiF,mBAGlGvR,EAHkG,KAG5FyY,EAH4F,KAInG4zB,EAAa,WAAO,IAAD,EACvB,GAAKxpC,EAAL,CADuB,IAIfQ,EAA2BR,EAA3BQ,YAAaD,EAAcP,EAAdO,UAErB,UAAAqG,EADU,kBAAoBpG,EAAc,IAAMD,EAAY,gBAC7CgD,EAAU6G,mBAAoB,CAAE3D,OAAQ,MAAOC,KAAMvJ,EAAM6J,KAAK,WAAjF,SACIjB,MAAK,SAACC,GACNA,EAAIC,GAAKgE,EAAMgL,QAAQ,oCAAsChL,EAAM9D,MAAM,iCACzEoiC,GAAW,GACXrzB,aAAO,gBAAD,OAAiBrS,IACvBqS,aAAO,uBAAD,OAAwBrS,OAE/B2N,OAAM,SAACyzB,GACNh6B,EAAM9D,MAAM,gCACZnJ,QAAQC,IAAIgnC,QAIlB,OACE,eAACC,GAAA,EAAD,CAAO5uB,KAAMyc,EAAS9wB,KAAK,OAAOkjC,OAAO,WAAW/mC,UAAU,OAA9D,UACE,cAAC8mC,GAAA,EAAMv5B,OAAP,CAAc7F,MAAO,CAAED,MAAO,SAA9B,0CACA,cAACq/B,GAAA,EAAMt5B,QAAP,CAAe9F,MAAO,CAAED,MAAO,SAA/B,SACE,cAACiL,GAAA,EAAD,CAAM25B,SAAUD,EAAhB,SACE,cAACj1B,GAAA,EAAD,CACEm1B,aAAY,OAAE1pC,QAAF,IAAEA,OAAF,EAAEA,EAAQ7C,KACtB2O,SAAU,SAAC/O,GACT6Y,EAAQ7Y,EAAEsH,OAAOlD,cAKzB,eAAC+iC,GAAA,EAAMG,QAAP,WACE,cAAC10B,GAAA,EAAD,CAAQjT,QAAS,SAACK,GAAD,OAAOwrC,GAAW,IAAQ7wB,UAAQ,EAAnD,oBAGA,cAAC/H,GAAA,EAAD,CAAQjT,QAAS8sC,EAAY73B,UAAQ,EAArC,2BCxBFg4B,GAAa1+B,aAAS,YAA6C,IAA1C2+B,EAAyC,EAAzCA,QAASzmB,EAAgC,EAAhCA,SAAgC,EACrCxf,IAAzBF,EAD8D,EAC9DA,UAAWF,EADmD,EACnDA,UACbV,EAAUY,EAAUyB,aAF4C,EAGrDwJ,qBAAVm7B,EAH+D,sBAIlDn7B,mBAAc,aAA3BnM,EAJ+D,sBAKpBmM,oBAAkB,GALE,mBAK/Do7B,EAL+D,KAK5CC,EAL4C,OAM1Br7B,oBAAkB,GANQ,mBAM/Ds7B,EAN+D,KAM/CC,EAN+C,OAOdv7B,oBAAkB,GAPJ,mBAO/Dw7B,EAP+D,KAOzCC,EAPyC,OAQ9Bz7B,qBAR8B,mBAQ/D07B,EAR+D,KAQjDC,EARiD,OASpB37B,oBAAS,GATW,mBAS/D47B,EAT+D,KAS5CC,EAT4C,OAUtB77B,oBAAS,GAVa,mBAU/Dq6B,EAV+D,KAU7CC,EAV6C,OAWxC7+B,aAAOtH,EAAO,uBAAmBA,GAAY,IAAI,SAAC6C,GAAD,OAC7EkB,EAAYlB,EAAKnC,EAAU6G,uBADfJ,EAXwD,EAW9D1D,KAAYH,EAXkD,EAWlDA,MAINqkC,EAAergC,aAAOtH,EAAO,8BAA0BA,GAAY,IAAI,SAAC6C,GAAD,OACnFkB,EAAYlB,EAAKnC,EAAU6G,uBADrB9D,KAIR,IAAKkkC,EACH,OAAO,cAAC//B,EAAA,EAAD,CAAQzF,QAAM,IAGvB,IAAMylC,EAAoCD,EAEpC1mB,EAAiC9Z,GAAQA,EAAK2Z,MAAM5X,MAAK,SAAC+X,GAAD,OAAwBA,EAAKpmB,WAAaksC,KACnGc,EAAuB5mB,EAAOA,EAAKC,iBAAiBjb,KAAI,SAACsyB,GAAD,OAAgCA,EAAG19B,YAAY,GAEvGitC,EAAgCF,EACnCxsB,QAAO,SAACmqB,GAAD,OAAyBA,EAAIhZ,mBACpCnR,QAAO,SAACmqB,GAAD,OAAyBA,EAAIhZ,iBAAmBsb,EAAWphC,SAAS8+B,EAAIhZ,gBAAgB1xB,aAElG,OACE,eAACkZ,GAAA,EAAOC,SAAR,CAAiBta,GAAI8R,WAArB,UACE,eAAC4H,GAAA,EAAD,CAAO20B,YAAU,EAACC,UAAQ,EAAC/zB,QAAM,EAAClS,UAAQ,EAACC,MAAM,OAAjD,UACE,cAACoR,GAAA,EAAMtL,OAAP,UACE,eAACsL,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAMc,WAAP,CACE+zB,OAAmB,SAAXjB,EAAoBtnC,EAAY,KAD1C,oBAMA,cAAC0T,GAAA,EAAMc,WAAP,CACE+zB,OAAmB,UAAXjB,EAAqBtnC,EAAY,KAD3C,uBAMA,cAAC0T,GAAA,EAAMc,WAAP,CACEtS,MAAO,EACPqmC,OAAmB,YAAXjB,EAAuBtnC,EAAY,KAE3C4uB,QAAQ,IACRxlB,UAAU,SALZ,oBASA,cAACsK,GAAA,EAAMc,WAAP,CAAkB5G,UAAQ,EAAC1L,MAAO,SAIrCkmC,EAAYprC,OAAS,GACpB,cAAC0W,GAAA,EAAMe,KAAP,UACG2zB,EACE1sB,QAAO,SAACmqB,GAAD,OAAyBA,EAAIhZ,mBACpC1Y,MAAK,SAAClR,EAAmBmR,GACxB,OAAInR,EAAE4pB,iBAAmBzY,EAAEyY,gBACrB5pB,EAAE4pB,gBAAgB9L,KAAKvK,YAAcpC,EAAEyY,gBAAgB9L,KAAKvK,UACvDvT,EAAE4pB,gBAAgB9L,KAAKrK,YAActC,EAAEyY,gBAAgB9L,KAAKrK,YAAc,GAAK,EAEjFzT,EAAE4pB,gBAAgB9L,KAAKvK,UAAYpC,EAAEyY,gBAAgB9L,KAAKvK,UAAY,GAAK,GAG5E,KAETjQ,KAAI,SAACs/B,EAAqBhmC,GAAW,IAAD,MACnC,OACE,eAAC6T,GAAA,EAAMC,IAAP,WACE,eAACD,GAAA,EAAME,KAAP,WACGiyB,EAAIpoC,QAAU,cAAC,GAAD,CAAYc,WAAU,UAAEsnC,EAAIpoC,cAAN,aAAE,EAAYQ,cAElD4nC,EAAIpoC,QAAUooC,EAAIpoC,OAAO7C,KACxB,cAACqQ,EAAA,EAAD,CACEjC,QAAS68B,EAAIpoC,OAAO7C,KACpB8O,QACE,sBAAMnH,MAAO,CAAE4W,KAAM,OAAQhS,SAAU,YAAvC,SACGsO,GAAcowB,EAAIpoC,OAAOQ,YAAa4nC,EAAIpoC,OAAOO,UAAW6nC,EAAIpoC,OAAO7C,KAAM,QAKpFirC,EAAIpoC,QACF,sBAAM8E,MAAO,CAAE4W,KAAM,OAAQhS,SAAU,YAAvC,SACGsO,GAAcowB,EAAIpoC,OAAOQ,YAAa4nC,EAAI7nC,UAAW6nC,EAAIpoC,OAAO7C,WAKxEirC,EAAIhZ,iBACH,eAACnZ,GAAA,EAAME,KAAP,WACG0C,GAAeuvB,EAAIhZ,gBAAgB9L,MAAO,KAC1C,UAAAtK,GAAiBovB,EAAIhZ,gBAAgB9L,aAArC,eAA4CpT,OACzC,KAAO8I,GAAiBovB,EAAIhZ,gBAAgB9L,MAAMpT,MAClD,MAGR,cAAC,GAAD,CAAck4B,IAAKA,IACnB,cAACnyB,GAAA,EAAME,KAAP,CAAY40B,YAAU,EAAtB,SACE,cAACv/B,EAAA,EAAD,CAAUm8B,MAAI,EAACplC,UAAU,OAAO2L,KAAK,sBAArC,SACE,eAAC1C,EAAA,EAASnP,KAAV,WACE,eAACmP,EAAA,EAASlP,KAAV,CACEI,QAAS,SAACK,GACRotC,GAAwB,GACxBE,EAAgBjC,IAHpB,UAME,cAAClrC,EAAA,EAAD,CAAMC,KAAK,iBANb,0BASA,eAACqO,EAAA,EAASlP,KAAV,CACEI,QAAS,SAACK,GACRktC,GAAkB,GAClBI,EAAgBjC,IAHpB,UAME,cAAClrC,EAAA,EAAD,CAAMC,KAAK,WANb,gCA1CQ,UAAAirC,EAAIpoC,cAAJ,eAAYtC,WAAY0E,QA4DjDqoC,GAAmBA,EAAgB3W,OAAOv0B,OAAS,GAClD,cAAC0W,GAAA,EAAMtL,OAAP,UACE,cAACsL,GAAA,EAAMC,IAAP,UACE,eAACD,GAAA,EAAMc,WAAP,CACEoa,QAAQ,IACRz0B,QAAS,WACP6tC,GAAqB,SAACtjC,GAAD,OAAaA,MAHtC,UAME,cAAC/J,EAAA,EAAD,CAAMC,KAAK,cAAc6tC,QAASV,EAAoB,iBAAcxnC,IANtE,uBAQG2nC,EAAgB3W,OAAO7V,QAAO,SAACmqB,GAAD,OAA0BA,EAAIhZ,mBAAiB7vB,OARhF,QADa,wBAenB,cAAC0W,GAAA,EAAMe,KAAP,UACGszB,GACCG,GACAA,EACG3W,OAEA7V,QAAO,SAACmqB,GAAD,OAA0BA,EAAIhZ,mBACrC1Y,MAAK,SAAClR,EAAmBmR,GAApB,OACJnR,EAAExF,QAAU2W,EAAE3W,QAAUwF,EAAExF,OAAOQ,YAAcmW,EAAE3W,OAAOQ,YAAc,GAAW,KAElFsI,KAAI,SAACs/B,EAAqBhmC,GAAmB,IAAD,EACrCtB,EAAasnC,EAAIC,aACnBD,EAAIC,aAAa7nC,YACjB4nC,EAAIpoC,OACJooC,EAAIpoC,OAAOQ,YACX,GACEK,EAAWunC,EAAIC,aAAeD,EAAIC,aAAa9nC,UAAY6nC,EAAIpoC,OAASooC,EAAIpoC,OAAOO,WAAa,EACtG,OACE,eAAC0V,GAAA,EAAMC,IAAP,WACE,eAACD,GAAA,EAAME,KAAP,WACE,cAAC,GAAD,CAAYrV,WAAYA,IACxB,sBAAMgE,MAAO,CAAE4W,KAAM,OAAQhS,SAAU,YAAvC,SACGsO,GAAclX,EAAYD,EAAb,UAAuBunC,EAAIpoC,cAA3B,aAAuB,EAAY7C,WAGrD,cAAC8Y,GAAA,EAAME,KAAP,IACA,cAAC,GAAD,CAAciyB,IAAKA,IACnB,cAACnyB,GAAA,EAAME,KAAP,UACE,cAACjZ,EAAA,EAAD,CACEC,KAAK,QACLC,UAAU,UACVV,QAAS,WACP2tC,EAAgBjC,GAChB2B,GAAqB,UAfb3B,EAAIpoC,OAASooC,EAAIpoC,OAAOtC,SAAW0E,QAuB7D,cAAC6T,GAAA,EAAMtL,OAAP,UACE,cAACsL,GAAA,EAAMC,IAAP,UACE,eAACD,GAAA,EAAMc,WAAP,CACEoa,QAAQ,IACRz0B,QAAS,WACPssC,GAAoB,SAAC/hC,GAAD,OAAaA,MAHrC,UAME,cAAC/J,EAAA,EAAD,CAAMC,KAAK,cAAc0H,MAAM,UANjC,iBADa,mBAanB,cAAC,GAAD,CACEhC,QAASA,GAAoB,GAC7BzD,QAASqrC,EACT1B,iBAAkBA,EAClBC,oBAAqBA,IAEvB,cAAC,GAAD,CACEnmC,QAASA,EACT7C,OAAM,OAAEoqC,QAAF,IAAEA,OAAF,EAAEA,EAAcpqC,OACtB+xB,QAASiY,EACTzB,WAAY0B,IAEd,cAAC,GAAD,CACEpnC,QAASA,EACTulC,IAAKgC,EACLrY,QAASmY,EACT3B,WAAY4B,IAEd,cAAC,GAAD,CACEtnC,QAASA,EACTihB,KAAMA,EACNskB,IAAKgC,EACLrY,QAAS+X,EACTvB,WAAYwB,EACZ5mB,SAAUA,IAEZ,cAACvM,GAAA,EAAD,CAAQ5R,OAAQmB,EAAhB,SACE,cAACwE,EAAA,EAAD,CAAQpO,GAAI,KAAZ,4CASF0uC,GAAe,SAAC,GAAgC,IAAD,YAA7B7C,EAA6B,EAA7BA,IAChB8C,GAAU,UAAA9C,EAAIC,oBAAJ,eAAkB6C,SAAU9C,EAAIC,aAAa6C,QAAU,EACjEC,EAAYxsC,IAAM,UAACypC,EAAIC,oBAAL,aAAC,EAAkBxuB,IACxCuxB,SAAQ,GACRzH,QAAQ,SAAU,OAClBA,QAAQ,UAAW,OACnBA,QAAQ,SAAU,OAEf0H,EAAwB1sC,IAAO8K,SAAS9K,MAAS4zB,KAAK5zB,IAAM,UAACypC,EAAIC,oBAAL,aAAC,EAAkBxuB,MAAMyxB,UAE3F,OACE,qCACE,eAACr1B,GAAA,EAAME,KAAP,WACE,cAACjZ,EAAA,EAAD,CACE+D,KAAK,QACL4D,MAAQqmC,EAAmBA,EAAU,GAAK,QAAUA,EAAU,EAAI,SAAW,MAA3D,OAClB/tC,KACE+tC,EAAU,GACN,eACAA,EAAU,GACV,gBACAA,EAAU,GACV,cACAA,EAAU,EACV,cACA,iBAEL,IACFA,EAAUA,EAAU,IAAM,MAE7B,cAACj1B,GAAA,EAAME,KAAP,CAAY40B,YAAU,EAAtB,SACE,cAACv9B,EAAA,EAAD,CACE9D,SAAS,cACT6hC,MAAI,EACJC,OAAO,eACPjgC,QACE68B,EAAIC,aACF,cAACpyB,GAAA,EAAD,UACE,eAACw1B,GAAA,EAAD,WACE,eAACC,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,wBACA,cAACA,GAAA,EAAD,UAAYvD,EAAI7nC,gBAEjB,UAAA6nC,EAAIpoC,cAAJ,eAAY7C,OACX,eAACuuC,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,0BACA,cAACA,GAAA,EAAD,oBAAYvD,EAAIpoC,cAAhB,aAAY,EAAY7C,UAG5B,cAACuuC,GAAA,EAAD,UACGtD,EAAIC,cACH,qCACE,cAACsD,GAAA,EAAD,6BACA,cAACA,GAAA,EAAD,UAAYvD,EAAIC,aAAeD,EAAIC,aAAauD,eAAexuB,QAAQ,GAAK,UAIlF,eAACsuB,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,mBACA,cAACA,GAAA,EAAD,UACGvD,EAAIC,aAAe1pC,IAAM,UAACypC,EAAIC,oBAAL,aAAC,EAAkBxuB,IAAIgyB,OAAO,eAAiB,wBAMjF,eAACz6B,GAAA,EAAD,6CAAyCg3B,EAAI7nC,aAGjD0L,QACE,uBAAMnH,MAAO,CAAED,MAAOwmC,EAAwB,GAAKA,EAAwB,GAAK,QAAU,QAA1F,UACE,cAACnuC,EAAA,EAAD,CACEC,KAAK,YACL0H,MAAOwmC,EAAwB,GAAKA,EAAwB,GAAK,QAAU,SAE5EA,EAAwB,EAAIF,EAAY,cASxCxB,MClWTmC,GAAc,SAAClC,EAAiB5/B,GACpC,IAAKA,EACH,MAAO,GAET,IAAM8Z,EAAO9Z,EAAK2Z,MAAM5X,MAAK,SAAC+X,GAAD,OAAUA,EAAKpmB,WAAaksC,KACzD,OAAI9lB,EACKA,EAAK3mB,KAAKoC,OAAS,EAAIukB,EAAK3mB,KAAO2mB,EAAKnmB,UAAY,IAAMmmB,EAAK3mB,KAE/D,IAiDLq4B,GAAQ,SAAC,GAA+C,IAA7C1R,EAA4C,EAA5CA,KAAMioB,EAAsC,EAAtCA,oBACrB,YAAajpC,IAATghB,EACK,GAEA,CACL,CACE2R,SAAU,SACVC,OAAQ,kBACN,cAACC,GAAA,EAAIC,KAAL,CAAUx4B,UAAU,sBAAsB4U,SAAU8R,EAApD,SACGA,GAAQ,cAAC,GAAD,CAAoBA,KAAMA,EAAM1mB,UAAU,kCAIzD,CACEq4B,SAAU,SACVC,OAAQ,WACN,OACE,cAACC,GAAA,EAAIC,KAAL,CAAUx4B,UAAU,sBAApB,SACG0mB,GACC,cAACgV,GAAD,CACE70B,oBAAqB8nC,EACrBzb,OAAQxM,EAAKpmB,SACbmyB,WAAY,IACZwB,wBAAyB,UAOrC,CACEoE,SAAU,UACVC,OAAQ,kBACN,cAACC,GAAA,EAAIC,KAAL,CAAUx4B,UAAU,sBAApB,SACG0mB,GAAQ,cAAC,GAAD,CAAY8lB,QAAO,OAAE9lB,QAAF,IAAEA,OAAF,EAAEA,EAAMpmB,SAAUylB,SAAQ,OAAEW,QAAF,IAAEA,OAAF,EAAEA,EAAM3mB,WAIpE,CACEs4B,SAAU,SACVC,OAAQ,kBAAM,cAACC,GAAA,EAAIC,KAAL,CAAUx4B,UAAU,sBAApB,SAA2C0mB,GAAQ,cAAC,GAAD,CAAWA,KAAMA,UAM3EkoB,GArFY,SAAC,GAAqE,IAAnEpC,EAAkE,EAAlEA,QAAS5/B,EAAyD,EAAzDA,KAAM+hC,EAAmD,EAAnDA,oBACrCjoB,EAA8B,OAAG9Z,QAAH,IAAGA,OAAH,EAAGA,EAAM2Z,MAAM5X,MAAK,SAACkgC,GAAD,OAAqBA,EAAEvuC,WAAaksC,KADE,EAExDl7B,qBAFwD,mBAEvF8U,EAFuF,KAE1EC,EAF0E,KAG9F,OACE,eAAC,KAAD,CAAWrmB,UAAU,iBAArB,UACE,eAAC+iB,GAAA,EAAD,WACE,cAACA,GAAA,EAAKE,OAAN,CAAahB,QAAQ,OAAO5a,MAAO,EAAnC,SACE,cAACkG,EAAA,EAAD,CAAQ/F,UAAQ,EAACE,MAAO,CAAEynB,QAAS,QAAnC,SACGuf,GAAYlC,EAAS5/B,OAG1B,cAACmW,GAAA,EAAKE,OAAN,CAAahB,QAAQ,QAAQ5a,MAAO,EAAGkH,UAAU,QAAjD,SACE,cAACgE,GAAA,EAAD,CACE/K,UAAQ,EACRsnC,UAAQ,EACRh+B,KAAK,QACL9Q,UAAU,aACVV,QAAS,WACPqvC,GAAoB,WAM5B,cAACpW,GAAA,EAAD,CACEK,KAAM,CAAEnxB,MAAO,OAAQD,UAAU,EAAMwI,UAAU,EAAM++B,SAAS,GAChE3W,MAAOA,GAAM,CAAE1R,OAAMioB,wBACrBvoB,YAAaA,EACb0S,YAAa,SAACn5B,EAAD,OAAMymB,EAAN,EAAMA,YAAN,OAAwBC,EAAeD,UCyE7C4oB,GA5GGnhC,aAAS,YAA+C,IAAD,IAA3CwpB,EAA2C,EAA3CA,MAAO5nB,EAAoC,EAApCA,cAAoC,EAC5BlJ,IAAnCF,EAD+D,EAC/DA,UAAWF,EADoD,EACpDA,UADoD,EACzCD,SACrBc,cAAc,aAFgD,MAIzCsK,qBAJyC,mBAIhEk7B,EAJgE,KAIvDyC,EAJuD,OAKvB39B,oBAAkB,GALK,mBAKhE49B,EALgE,KAK9CP,EAL8C,OAMvBr9B,mBAAc,cAAC,KAAD,KANS,mBAMhE69B,EANgE,KAM9CC,EAN8C,MAQ9D,OAAL/X,QAAK,IAALA,GAAA,UAAAA,EAAOplB,cAAP,eAAe/J,SAAU7B,EAAUyB,eAAiBuvB,EAAMplB,OAAO5L,UAAUyB,cAC7EzB,EAAUuI,WAAWyoB,EAAMplB,OAAO5L,UAAUyB,cAE9C4V,qBAAU,WACRixB,GAAoB,KACnB,CAACA,IAbmE,MAe9B5hC,aACvC1G,EAAUyB,aAAe,gBAAkBzB,EAAUyB,aAAe,MACpE,SAACQ,GAAD,OAAS6B,EAAYX,EAAYlB,EAAKnC,EAAU6G,uBAChD,IAHYJ,EAfyD,EAe/D1D,KAAmBmmC,EAf4C,EAenDtmC,MAfmD,EAoBhBgE,aACrD1G,EAAUyB,aAAe,qBAAuBzB,EAAUyB,aAAe,MACzE,SAACQ,GAAD,OAAS2B,EAAuBT,EAAYlB,EAAKnC,EAAU6G,uBAC3D,CAAEuQ,gBAAiB,MAHP+xB,EApByD,EAoB/DpmC,KAAgCqmC,EApB+B,EAoBtCxmC,MA4BjC,OAtBIwmC,GACF3vC,QAAQmJ,MAAMwmC,GAEhB7xB,qBAAU,WACR8uB,GACE4C,EACE,cAAC,GAAD,CACE5C,QAASA,EACTmC,oBAAqBA,EACrB/hC,KAAMA,OAGX,CAAC4/B,EAASmC,EAAqBS,EAAqB/oC,EAAWuG,IAElE8Q,qBAAU,WACRixB,GAAuBA,GAAoB,KAC1C,CAACA,IAEJjxB,qBAAU,WACRjO,GAAiBA,EAAc,eAC9B,CAACA,IAEC7C,GAIA0iC,GACH1vC,QAAQC,IAAI,+BAGd,OAAI+M,QAAJ,IAAIA,GAAJ,UAAIA,EAAM2Z,aAAV,aAAI,EAAapkB,SAAQyK,EAAK2Z,MAAMjN,MAAK,SAAClR,EAAiBmR,GAAlB,OAAuCnR,EAAE9H,SAAWiZ,EAAEjZ,SAAW,GAAK,KAE3GsM,GAAQA,EAAK2Z,OACf3Z,EAAK2Z,MACFhb,SAAQ,SAACmb,GAAD,OAAwBA,EAAKC,oBACrCvkB,SAAQ,SAAC47B,GACR,GAAIsR,EAAmB,CACrB,IAAIE,EAAgBF,EAAkB3gC,MAAK,SAACnD,GAAD,OAAgCA,EAASikC,SAAWzR,EAAG19B,YAC9FkvC,IACFxR,EAAGlI,gBAAkB0Z,EAAc/jC,aAC/BuyB,EAAGlI,gBAAgB3zB,OAAS,IAC9B67B,EAAGn0B,OAASm0B,EAAGlI,gBACZpqB,KAAI,SAACgkC,GAAD,OAAwBA,EAAG/jC,YAC/BE,QAAO,SAAC8jC,EAAuBC,GAC9B,OAAOD,EAAU/jC,MAAQgkC,EAAahkC,MAAQ+jC,EAAYC,WASxE,eAACp2B,GAAA,EAAOC,SAAR,CAAiBta,GAAI8R,WAArB,UACE,cAAC,GAAD,CAAW9C,QAASghC,EAAkB7nC,QAAS4nC,IAC/C,cAAC,GAAD,CACEtiC,KAAMA,EACNs2B,YAAa,SAACh/B,GACZ+qC,EAAW/qC,GACXyqC,GAAoB,IAEtB9nC,oBAAqB8nC,EACrB1L,UAAWgM,EACX9L,YAAa+L,IAEf,cAAC11B,GAAA,EAAD,CACE9R,MAAO,CACL6pB,OAAQ,KAEV3pB,OAAQynC,EAJV,SAMGA,GACC,eAAC9hC,EAAA,EAAD,CAAQpO,GAAG,KAAKqI,UAAQ,EAACsJ,MAAI,EAA7B,UACE,cAAChR,EAAA,EAAD,CAAMC,KAAK,YADb,oCAjDC,cAACsN,EAAA,EAAD,CAAQzF,QAAM,O,+EC5CnBioC,I,OAAkB,CAAC,UAAW,UAAW,UAAW,YACpDC,GAAa,CAAC,KAAM,KAAM,KAAM,MAMhCC,GAAkB,SAAC,GAA2C,IAAzCC,EAAwC,EAAxCA,YAKzB,OAAO,mBAAGhwC,UAAU,OAAO8qB,IAHX,SAACmlB,GACfA,GAAQD,EAAYE,aAAOD,QAUzBE,GAAuB,SAAC,GAAuD,IAArDC,EAAoD,EAApDA,aAAcC,EAAsC,EAAtCA,SAC5CD,EAAaC,SAASA,GAAUC,aAMhC,OAAO,mBAAGtwC,UAAU,aAAa8qB,IAHjB,SAACmlB,GACfA,GAAQG,EAAaF,aAAOD,QAc1BM,GAA4C,SAAC,GAO5C,IANLC,EAMI,EANJA,aACAC,EAKI,EALJA,iBACAC,EAII,EAJJA,UACAC,EAGI,EAHJA,UACAC,EAEI,EAFJA,cACAC,EACI,EADJA,cAEMC,EAAe,SAACnxC,EAAsCuJ,GAC1D,IAAI6nC,EAAqB7nC,EAAKnF,MAC9B0sC,EAAiBM,IAGbC,EAAmB,SAACrxC,EAAsCuJ,GAC9DtJ,QAAQC,IAAI,gBAAiBqJ,EAAKnF,OAClC6sC,EAActpB,SAASpe,EAAKnF,SAGxBktC,EAAmB,SAACtxC,EAAsCuJ,GAC9D2nC,EAAcvpB,SAASpe,EAAKnF,SAkD9B,OACE,cAACqM,EAAA,EAAD,CACEjC,QAjDsB,WACxB,OACE,eAACuE,GAAA,EAAD,WACE,cAACA,GAAA,EAAKC,MAAN,2BACA,cAACD,GAAA,EAAKC,MAAN,UACE,cAACo2B,GAAA,EAAD,CACEj2B,MAAM,OACN/S,KAAK,aACLgE,MAAM,OACNjB,QAA0B,SAAjB0tC,EACT9hC,SAAUoiC,MAGd,cAACp+B,GAAA,EAAKC,MAAN,UACE,cAACo2B,GAAA,EAAD,CACEj2B,MAAM,QACN/S,KAAK,aACLgE,MAAM,QACNjB,QAA0B,UAAjB0tC,EACT9hC,SAAUoiC,MAGd,cAAC/oC,EAAA,EAAD,IACA,cAAC2K,GAAA,EAAKC,MAAN,UACE,cAACwE,GAAA,EAAD,CACErE,MAAM,QACNpL,MAAO,CAAEL,MAAO,OAChBxD,KAAK,OACLyoC,aAAcqE,EACdjiC,SAAUuiC,EACVl+B,SAA2B,UAAjBy9B,MAGd,cAAC99B,GAAA,EAAKC,MAAN,UACE,cAACwE,GAAA,EAAD,CACErE,MAAM,QACNpL,MAAO,CAAEL,MAAO,OAChBxD,KAAK,OACLyoC,aAAcoE,EACdhiC,SAAUsiC,EACVj+B,SAA2B,UAAjBy9B,UAUhBv9B,GAAG,QACHpE,QAAS,cAAC/O,EAAA,EAAD,CAAMC,KAAK,UAAU2H,MAAO,CAAEwzB,MAAO,SAAWzzB,MAAM,SAC/D6E,SAAS,eAUT4kC,GAA4B,SAAC,GAA+B,IAA7BC,EAA4B,EAA5BA,iBAAkBC,EAAU,EAAVA,IACrD,GAAY,IAARA,EAAW,OAAO,6BAGtB,IAAIC,EAAkB,GAAKD,EACvBE,EAAiB,GAAKF,EACtBG,EAAM,GAAKH,EACXI,GAAO,GAAKJ,EACZK,EAAU,EAAIL,EACdM,EAAU,GAAKN,EACfO,EAAU,GAAKP,EACfQ,EAAQ,GAAKR,EACbS,EAAQ,GAAKT,EACbU,EAAS,GAAKV,EAElB,OACE,oBAAG/pC,MAAM,MAAM4I,OAAO,MAAMwhB,UAAW0f,EAAvC,UACE,sBAAM5kC,EAAGglC,EAAK/kC,EAAGglC,EAAK9pC,MAAO,CAAEwI,SAAUmhC,EAAkB,KAAMU,mBAAoB,aAArF,uBAGA,wBAAQC,GAAIN,EAASO,GAAIN,EAASx+B,EAAGs+B,EAAS/gB,KAAMmf,GAAgB,KACpE,sBAAM7vC,UAAU,cAAcuM,EAAGqlC,EAAOplC,EAAGqlC,EAAOnqC,MAAO,CAAEwI,SAAUohC,EAAiB,KAAMnxB,WAAY,QAAxG,SACG2vB,GAAW,KAEd,wBAAQkC,GAAIN,EAASO,GAAIN,EAAUG,EAAQ3+B,EAAGs+B,EAAS/gB,KAAMmf,GAAgB,KAC7E,sBACE7vC,UAAU,cACVuM,EAAGqlC,EACHplC,EAAGqlC,EAAQC,EACXpqC,MAAO,CAAEwI,SAAUohC,EAAiB,KAAMnxB,WAAY,QAJxD,SAMG2vB,GAAW,KAEd,wBAAQkC,GAAIN,EAASO,GAAIN,EAAU,EAAIG,EAAQ3+B,EAAGs+B,EAAS/gB,KAAMmf,GAAgB,KACjF,sBACE7vC,UAAU,cACVuM,EAAGqlC,EACHplC,EAAGqlC,EAAQ,EAAIC,EACfpqC,MAAO,CAAEwI,SAAUohC,EAAiB,KAAMnxB,WAAY,QAJxD,SAMG2vB,GAAW,KAEd,wBAAQkC,GAAIN,EAASO,GAAIN,EAAU,EAAIG,EAAQ3+B,EAAGs+B,EAAS/gB,KAAMmf,GAAgB,KACjF,sBACE7vC,UAAU,cACVuM,EAAGqlC,EACHplC,EAAGqlC,EAAQ,EAAIC,EACfpqC,MAAO,CAAEwI,SAAUohC,EAAiB,KAAMnxB,WAAY,QAJxD,SAMG2vB,GAAW,SAgBdoC,GAAkC,SAAC,GAQlC,IAPLC,EAOI,EAPJA,MACA9qC,EAMI,EANJA,MACA4I,EAKI,EALJA,OACAmhC,EAII,EAJJA,IACAZ,EAGI,EAHJA,aACA4B,EAEI,EAFJA,eACAC,EACI,EADJA,eAEMj0B,EAAgB,GAAhBA,EAA2B,GAA3BA,EAAuC,GAAvCA,EAAiD,GACjDk0B,EAAajrC,EACbkrC,EAActiC,EACduiC,EAASF,EAAal0B,EAAcA,EACpCq0B,EAAUF,EAAcn0B,EAAaA,EAErCs0B,EAAgC,EAAbt0B,EAAiBgzB,EACpCuB,EAAoC,GAAfv0B,EAAoBgzB,EAEzCwB,EAAYjoB,iBAA0B,MACtCkoB,EAAOloB,iBAAO,IAAIvf,MAAM,KACxB0nC,EAAOnoB,iBAAO,IAAIvf,MAAM,KAExB2nC,EAAQZ,EAAM,GAAG,GAAGa,GACpBC,EAAQd,EAAM,GAAGA,EAAM,GAAGhwC,OAAS,GAAG6wC,GAExCE,EAAOd,GAAkB,IACzBe,EAAOd,GAAkB,EAE7B,GAAqB,SAAjB7B,EAAyB,CAC3B,IAAM4C,EAAYjB,EAAMzmC,KAAI,SAAC6+B,GAC3B,OAAO8I,aAAO9I,GAAM,SAAC32B,GAAD,OAAOA,EAAE0/B,SAEzBC,EAAQtkB,aAAImkB,GAAW,SAACx/B,GAAD,OAAOA,EAAE,MAChC4/B,EAAQtkB,aAAIkkB,GAAW,SAACx/B,GAAD,OAAOA,EAAE,MAEtCk/B,EAAK/mC,QAAQ0nC,QACbX,EAAK/mC,QAAQzJ,KAAKkxC,GAClBX,EAAK9mC,QAAQ0nC,QACbZ,EAAK9mC,QAAQzJ,KAAKixC,GAElBL,EAAOhkB,aAAI4jB,EAAK/mC,SAChBonC,EAAOlkB,aAAI4jB,EAAK9mC,SAGhBmnC,GAAQ,GACRC,GAAQ,GAGV,IAAMO,EAASC,eAAcn0B,OAAO,CAACuzB,EAAOE,IAAQW,MAAM,CAAC,EAAGpB,IAASqB,OAEjEC,EAASH,eAAcn0B,OAAO,CAAC2zB,EAAMD,IAAOU,MAAM,CAACnB,EAAS,IAAIoB,OAEtEn2B,qBAAU,WACR,IAAMq2B,EAASnB,EAAU7mC,QACzB,GAAc,MAAVgoC,EAAJ,CACA,IAAM9H,EAAU8H,EAAOC,WAAW,MAClC,GAAe,MAAX/H,EAAJ,CAEA,IAAIgI,EAAShI,EAAQ8H,OAAOG,YACxBC,EAAUlI,EAAQ8H,OAAOK,aAE7BnI,EAAQ8H,OAAO1sC,MAAQ4sC,EACvBhI,EAAQ8H,OAAO9jC,OAASkkC,EAExB,IAMcE,KAmBTpI,GAlBCqI,UAAU,EAAG,EAAGD,EAAIN,OAAO1sC,MAAOgtC,EAAIN,OAAO9jC,QAE5CkiC,GAILA,EAAM/vC,SAAQ,SAAC+Q,EAAGohC,GAChBF,EAAIG,YAEJH,EAAII,YAAc5E,GAAgB0E,GAClCF,EAAIK,UAAY,EAChBvhC,EAAE/Q,SAAQ,SAACwR,IAlBG,SAACygC,EAA+B9nC,EAAWC,GAC3D,IAAMwmC,EAAKU,EAAOnnC,GACZ+mC,EAAKQ,EAAOtnC,GAClB6nC,EAAIM,OAAO3B,EAAIM,GAgBXsB,CAAUP,EAAKzgC,EAAEo/B,GAAIp/B,EAAE0/B,OAEzBe,EAAI51B,gBAKP,CAAC0zB,EAAOuB,EAAQI,IAEnB,IAAMe,EAAQC,aAAWpB,GACnBqB,EAAQC,aAASlB,GACjBmB,EAAWC,aAAQxB,GACnByB,EAAU,oBAAgB/2B,EAAhB,aAAgCm0B,EAAcn0B,EAA9C,KACVg3B,EAAU,oBAAgBh3B,EAAhB,aAAgCA,EAAhC,KACV+yB,EAAgB,oBAAgBmB,EAAaK,EAA7B,aAAoDD,EAApD,KAEhB2C,EAAQP,aAAWpB,GACnB4B,EAAQN,aAASlB,GAEvB,OACE,8BACE,sBAAK9zC,UAAU,oBAAoB0H,MAAO,CAAEL,MAAOirC,EAAYriC,OAAQsiC,GAAvE,UACE,wBACEvyC,UAAU,cACV8qB,IAAK8nB,EACLlrC,MAAO,CACLL,MAAOirC,EAAal0B,EACpBnO,OAAQsiC,EAAcn0B,EACtBiT,WAAYjT,EAAc,KAC1B5P,UAAW4P,EAAa,QAG5B,sBAAKpe,UAAU,WAAWqH,MAAOirC,EAAYriC,OAAQsiC,EAArD,UACE,oBAAG9gB,UAAW0jB,EAAd,UACE,cAAC,GAAD,CAAiBnF,YAAa6E,IAC9B,cAAC,GAAD,CAAsBzE,aAAciF,EAAOhF,UAAWoC,OAExD,oBAAGhhB,UAAW2jB,EAAd,UACE,cAAC,GAAD,CAAiBpF,YAAa+E,IAC9B,cAAC,GAAD,CAAsB3E,aAAckF,EAAOjF,UAAWmC,OAExD,mBAAG/gB,UAAW2jB,EAAd,SACE,cAAC,GAAD,CAAiBpF,YAAaiF,MAEhC,4BACE,cAAC,GAAD,CAAS9D,iBAAkBA,EAAkBC,IAAKA,eA4B9D,SAASmE,GAAQxwC,GAEf,OAAIA,GAAO,IACFywC,IAEFzwC,EAGT,SAAS0wC,GACPC,EACAC,EACAC,EACAC,EACAC,EACAxtC,GAIA,IAAIytC,EAAcL,EAAQvzC,OAAS,IAE/B6zC,EAAeN,EAAQhqC,KAAI,SAAUkI,GACvC,OAAOA,EAAE,MAEPqiC,EAAeP,EAAQhqC,KAAI,SAAUkI,GACvC,OAAOA,EAAE,MAEPsiC,EAAeR,EAAQhqC,KAAI,SAAUkI,GACvC,OAAOA,EAAE,MAEPuiC,EAAeT,EAAQhqC,KAAI,SAAUkI,GACvC,OAAOA,EAAE,MAGPmiC,EAAc,EAKhBL,EA1DG,WAEL,IAAIU,EAAa,GAEbC,EAAc,SAACntC,GAAD,OAChBktC,GAAc,EACVltC,EAAKwC,KAAI,SAACkI,GAAD,MAAY,CAACA,MACtBggC,aAAM,EAAGh3B,KAAK05B,KAAKptC,EAAK/G,OAASi0C,IAAa1qC,KAAI,SAACwI,GAAD,OAAOhL,EAAKqS,MAAMrH,EAAIkiC,GAAaliC,EAAI,GAAKkiC,OAUpG,OARAC,EAAOD,WAAa,SAAU7pC,GAC5B,OAAKgqC,UAAUp0C,QAIfi0C,EAAa7pC,EACN8pC,GAJED,GAMJC,EAsCIG,GACQJ,WAAWL,EAElBU,CAAQf,GAAShqC,KAAI,SAAUkI,GACvC,OAAOgJ,KAAKsS,IAAL,MAAAtS,KAAI,aAAQhJ,OAIrBmiC,EAAc,EAIhB,IADA,IAAI9qB,EAAgB,CAAC,GAAI,GAAI,GAAI,IACxBjmB,EAAQ,EAAGA,EAAQ0wC,EAAQvzC,OAAQ6C,IAAS,CACnD,IAAMguC,EAAKhuC,EAAQ+wC,EAAcJ,EAAUE,EACjC,EACV5qB,EAAS,GAAGjmB,GAAS,CAAEguC,GAAIA,EAAIM,GAAIwC,EADzB,EAC8CP,GAAQS,EAAGhxC,KACnEimB,EAAS,GAAGjmB,GAAS,CAAEguC,GAAIA,EAAIM,GAAIwC,EAFzB,EAE8CP,GAAQU,EAAGjxC,KACnEimB,EAAS,GAAGjmB,GAAS,CAAEguC,GAAIA,EAAIM,GAAIwC,EAHzB,EAG8CP,GAAQW,EAAGlxC,KACnEimB,EAAS,GAAGjmB,GAAS,CAAEguC,GAAIA,EAAIM,GAAIwC,EAJzB,EAI8CP,GAAQY,EAAGnxC,KAErE,OAAOimB,EAcT,IAAMyrB,GAAwB7oC,aAAS,YAAsD,IAAnDvF,EAAkD,EAAlDA,IAAKquC,EAA6C,EAA7CA,QAASC,EAAoC,EAApCA,QAC9CzwC,EAAcI,IAAdJ,UADkF,EAE9DmL,mBAAwB,IAFsC,mBAEnFulC,EAFmF,KAE3EC,EAF2E,OAG5DxlC,oBAAkB,GAH0C,mBAGnFsD,EAHmF,KAG1EoQ,EAH0E,OAIxD1T,qBAJwD,mBAInFmO,EAJmF,KAIzEs3B,EAJyE,OAKlDzlC,mBAAS,SALyC,mBAKnFk/B,EALmF,KAKrEwG,EALqE,OAMpD1lC,mBAASslC,IAAY,KAN+B,mBAMnFvE,EANmF,KAMnE4E,EANmE,OAOpD3lC,mBAASqlC,IAAY,GAP+B,mBAOnFvE,EAPmF,KAOnE8E,EAPmE,KAapFC,EAAW,uCAAG,8BAAA/uC,EAAA,6DAClB4c,GAAW,GADO,SAEKxb,EAAYlB,EAAKnC,EAAU6G,mBAAoB,CAAEpD,KAAK,IAF3D,YAEZrB,EAFY,QAGLM,GAHK,wBAIhBjJ,QAAQC,IAAI0I,GAJI,SAKIA,EAASO,OALb,OAKVsuC,EALU,OAMhBx3C,QAAQC,IAAIu3C,GACZN,EACErB,IACO,OAAL2B,QAAK,IAALA,OAAA,EAAAA,EAAOluC,OAAQ,CAAC,KACX,OAALkuC,QAAK,IAALA,OAAA,EAAAA,EAAOzB,UAAW,EACb,OAALyB,QAAK,IAALA,KAAOxB,SACF,OAALwB,QAAK,IAALA,OAAA,EAAAA,EAAOvB,WAAY,GACd,OAALuB,QAAK,IAALA,OAAA,EAAAA,EAAOtB,WAAY,IAbP,wBAmBlB9wB,GAAW,GAnBO,4CAAH,qDAgCjB,OACE,eAAC,WAAD,WACE,eAACqyB,GAAA,EAAD,WACE,cAAC9kC,GAAA,EAAD,CACEqC,QAASA,EACT9D,KAAM2O,EAAW,QAAU,OAC3BngB,QAAS,WACFmgB,GACHs3B,EAAcpd,aAAY,kBAAMwd,MAAe,MAEjDA,OAIJ,cAAC5kC,GAAA,EAAD,CACEzB,KAAK,OACLxR,QAAS,WACHmgB,IACF+a,cAAc/a,GACds3B,OAAcrxC,UAKtB,cAAC,GAAD,CACE8qC,aAAcA,EACdC,iBAAkBuG,EAClBtG,UAAW2B,EACX1B,UAAWyB,EACXxB,cAAeqG,EACfpG,cAAeqG,IAGjB,cAACnvC,EAAA,EAAD,CAASuvC,QAAM,IAEdT,EAAO10C,OAAS,GACf,cAAC,GAAD,CACEgwC,MAAO0E,EACPrG,aAAcA,EACd4B,eAAgBA,EAChBC,eAAgBA,U,GAQcvjC,sBAAY,CAClDC,YAAa,CACXC,GAAI,EACJC,GAAI,IACJsoC,GAAI,KACJC,GAAI,QALAtoC,G,GAAAA,qBAAsBC,G,GAAAA,MAgBxBsoC,GAAwB,SAAC,GAAyE,IAAvEtF,EAAsE,EAAtEA,MAAO3B,EAA+D,EAA/DA,aAAc4B,EAAiD,EAAjDA,eAAgBC,EAAiC,EAAjCA,eACpE,OACE,eAAC,GAAD,WACE,cAAC,GAAD,CAAOqF,GAAG,KAAV,SACE,cAAC,GAAD,CACEvF,MAAOA,EACP3B,aAAcA,EACd4B,eAAgBA,EAChBC,eAAgBA,EAChBhrC,MAAO,IACP4I,OAAQ,IACRmhC,IAAK,MAGT,cAAC,GAAD,CAAOsG,GAAG,KAAV,SACE,cAAC,GAAD,CACEvF,MAAOA,EACP3B,aAAcA,EACd4B,eAAgBA,EAChBC,eAAgBA,EAChBhrC,MAAO,IACP4I,OAAQ,IACRmhC,IAAK,OAGT,cAAC,GAAD,CAAOsG,GAAG,KAAV,SACE,cAAC,GAAD,CACEvF,MAAOA,EACP3B,aAAcA,EACd4B,eAAgBA,EAChBC,eAAgBA,EAChBhrC,MAAO,IACP4I,OAAQ,IACRmhC,IAAK,OAGT,cAAC,GAAD,CAAOjhC,mBAAmB,KAA1B,SACE,cAAC,GAAD,CACEgiC,MAAOA,EACP3B,aAAcA,EACd4B,eAAgBA,EAChBC,eAAgBA,EAChBhrC,MAAO,KACP4I,OAAQ,IACRmhC,IAAK,UAOAsF,M,UC3kBA,SAASiB,KAAoB,IAAD,EACHrmC,mBAAS,IADN,mBAClCmlB,EADkC,KACrBmhB,EADqB,OAETtmC,mBATI,IAOK,mBAElCjF,EAFkC,KAExBwrC,EAFwB,KAQzC,OACE,eAAC7jC,GAAA,EAAD,CAAShE,UAAQ,EAAjB,UACE,cAACjI,EAAA,EAAD,CAASutB,YAAU,EAAnB,+BACA,eAACzkB,GAAA,EAAD,CAASM,MAAI,EAACL,MAAI,EAAlB,UACE,cAAChR,EAAA,EAAD,CAAMC,KAAK,QACX,eAAC8Q,GAAA,EAAQrD,QAAT,WACE,cAACqD,GAAA,EAAQtD,OAAT,mEACA,gCACE,4HACA,4EAEE,cAACuqC,GAAD,CAAgBzrC,SAAUA,EAAU0rC,iBAAkBF,IAFxD,sEASN,eAACnlC,GAAA,EAAD,CAAMs3B,OAAQ,kBAAd,UACE,uBAAO/9B,KAAK,SAASlM,KAAK,OAAOgE,MAAO0yB,IAlCV,KAmC7BpqB,GAAsC,uBAAOJ,KAAK,SAASlM,KAAK,IAAIgE,MAAOsI,IAC5E,cAACkB,EAAA,EAAD,CAAQpO,GAAG,KAAX,mEACA,cAACuT,GAAA,EAAKC,MAAN,UACE,cAACqlC,GAAA,EAAD,CAAU3pC,YAAY,oBAAoBtK,MAAO0yB,EAAawhB,QA3BrD,SAACt4C,GAChBi4C,EAAej4C,EAAEsH,OAAOlD,QA0B+Dm0C,KAAM,MAEzF,cAACxlC,GAAA,EAAKC,MAAN,UACE,cAACJ,GAAA,EAAD,CAAQQ,UAAW0jB,EAAnB,kDAOV,SAASqhB,GAAeruC,GACtB,OACE,cAAC2G,EAAA,EAAD,CACE+nC,SAAO,EACPllC,GAAG,QACHpE,QAAS,+BAAOpF,EAAM4C,WACtB8B,QACE,eAACkpC,GAAA,EAAD,WACE,cAAC9kC,GAAA,EAAD,CACEjT,QAAS,WACPmK,EAAMsuC,iBAAiB,KAF3B,uBAOA,cAACxlC,GAAA,EAAD,CACEjT,QAAS,WACPmK,EAAMsuC,iBAAiB,KAF3B,uBAOA,cAACxlC,GAAA,EAAD,CACEjT,QAAS,WACPmK,EAAMsuC,iBAAiB,KAF3B,mBAOA,cAACxlC,GAAA,EAAD,CACEjT,QAAS,WACPmK,EAAMsuC,iBAAiB,MAF3B,wBCjEV,IAAMK,GAAcvqC,aAAS,WAAO,IAC1B1H,EAAcI,IAAdJ,UADyB,EAEY4G,aAC3C,6BACA,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBACpC,CACEuQ,gBAAiB,MAJP86B,EAFmB,EAEzBnvC,KAAqBovC,EAFI,EAEXvvC,MAQlBuvC,GACF14C,QAAQC,IAAI,eAAgBy4C,GAG9B,IAAIC,EAA2BF,GAAkB,GACjD,OACE,eAAC7+B,GAAA,EAAOC,SAAR,WACE,eAACZ,GAAA,EAAD,CAAO2c,SAAO,EAACgjB,YAAU,EAAChL,YAAU,EAAC3a,OAAK,EAACnrB,MAAO,CAAEktB,aAAc,QAASpmB,UAAW,QAAtF,UACE,cAACqK,GAAA,EAAMtL,OAAP,UACE,eAACsL,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAMc,WAAP,mBACA,cAACd,GAAA,EAAMc,WAAP,uBACA,cAACd,GAAA,EAAMc,WAAP,mBACA,cAACd,GAAA,EAAMc,WAAP,mBACA,cAACd,GAAA,EAAMc,WAAP,sBACA,cAACd,GAAA,EAAMc,WAAP,qBACA,cAACd,GAAA,EAAMc,WAAP,2BACA,cAACd,GAAA,EAAMc,WAAP,0BACA,cAACd,GAAA,EAAMc,WAAP,sBACA,cAACd,GAAA,EAAMc,WAAP,6BACA,cAACd,GAAA,EAAMc,WAAP,+BAIJ,cAACd,GAAA,EAAMe,KAAP,WACW,OAAR2+B,QAAQ,IAARA,OAAA,EAAAA,EAAUp2C,SACTo2C,EACGh9B,QACAk9B,UACA/sC,KAAI,SAACxC,EAAMlE,GAAP,OACH,cAAC,GAAD,CAEEkhB,KAAMhd,EAAKgd,KACXwyB,OAAQxvC,EAAKwvC,QAFRxvC,EAAKwvC,OAAOt1C,YAAc8F,EAAKwvC,OAAOv1C,UAAY+F,EAAKwvC,OAAOj8B,GAAKzX,WAOpF,eAACwU,GAAA,EAAD,CAAQ5R,OAAQ0wC,EAAhB,WACIA,GAAe,cAACjrC,EAAA,EAAD,CAAQzF,QAASywC,IACjCC,GACC,cAACtkC,GAAA,EAAD,UACE,cAACzG,EAAA,EAAD,yDAQNyO,GAAU,SAACnZ,GACf,OAAQA,GACN,QACE,OAAOA,EACT,IAAK,WACH,MAAO,GACT,IAAK,SACH,MAAO,IACT,IAAK,cACH,MAAO,QACT,IAAK,QACH,MAAO,IACT,IAAK,QACH,MAAO,OACT,IAAK,WACH,MAAO,MACT,IAAK,WACH,MAAO,IACT,IAAK,aACH,MAAO,OACT,IAAK,eACH,MAAO,cAIP81C,GAAa,SAAC,GAAyC,IAAD,EAAtCz0C,EAAsC,EAAtCA,IAAKgiB,EAAiC,EAAjCA,KAAMwyB,EAA2B,EAA3BA,OACzB1yB,EAAe,GAEjB0yB,EAAOt1C,cAAgBgH,IACzB4b,EAAa1jB,KAAK,CAAEwQ,MAAO,OAAQ/O,MAAOsjB,OAAOqxB,EAAOE,OAAO54B,QAAQ,GAAI64B,QAAS78B,GAAQ,WAC5FgK,EAAa1jB,KAAK,CAAEwQ,MAAO,QAAS/O,MAAOsjB,OAAOqxB,EAAOniB,OAAOvW,QAAQ,GAAI64B,QAAS78B,GAAQ,WAC7FgK,EAAa1jB,KAAK,CAChBwQ,MAAO,WACP/O,MAAOsjB,OAAOqxB,EAAOI,UAAU94B,QAAQ,GACvC64B,QAAS,SAEFH,EAAOt1C,cAAgBkH,IAChC0b,EAAa1jB,KAAK,CAAEwQ,MAAO,KAAM/O,MAAOsjB,OAAOqxB,EAAOK,QAAQ/4B,QAAQ,GAAI64B,QAAS78B,GAAQ1R,MAC3F0b,EAAa1jB,KAAK,CAAEwQ,MAAO,OAAQ/O,MAAOsjB,OAAOqxB,EAAOM,aAAah5B,QAAQ,GAAI64B,QAAS78B,GAAQ,kBACzF08B,EAAOt1C,cAAgBiH,IAChC2b,EAAa1jB,KAAK,CAChBwQ,MAAO,MACP/O,MAAOsjB,OAAOqxB,EAAOO,UAAUj5B,QAAQ,GACvC64B,QAAS78B,GAAQ3R,MAEnB2b,EAAa1jB,KAAK,CAAEwQ,MAAO,OAAQ/O,MAAOsjB,OAAOqxB,EAAOM,aAAah5B,QAAQ,GAAI64B,QAAS78B,GAAQ,iBAClGgK,EAAa1jB,KAAK,CAChBwQ,MAAO,eACP/O,MAAOsjB,OAAOqxB,EAAOQ,cACrBL,QAAS78B,GAAQ,kBAEnBgK,EAAa1jB,KAAK,CAChBwQ,MAAO,aACP/O,MAAOsjB,OAAOqxB,EAAOS,YACrBN,QAAS78B,GAAQ,iBAEV08B,EAAOt1C,cAAgBmH,KAChCyb,EAAa1jB,KAAK,CAChBwQ,MAAO,OACP/O,MAAOsjB,OAAOqxB,EAAOU,WAAWp5B,QAAQ,GACxC64B,QAAS78B,GAAQzR,MAEnByb,EAAa1jB,KAAK,CAAEwQ,MAAO,OAAQ/O,MAAOsjB,OAAOqxB,EAAOM,aAAah5B,QAAQ,GAAI64B,QAAS78B,GAAQ,kBAGpG,IAAItY,EAAag1C,EAAOt1C,YAAY,GAAGkY,cAAgBo9B,EAAOt1C,YAAYmY,MAAM,GAC5Exb,EAAO,gBAAkB2D,EAAa,IAAMg1C,EAAOv1C,UACnD+iB,IACFnmB,EAAOmmB,EAAKnmB,MAEd,IAAIs5C,EAA6B,GAC5BX,EAAOW,WAA0C,KAA7B,UAAAX,EAAOW,iBAAP,eAAkBl3C,QASzCk3C,EAAYX,EAAOW,UAPnBA,EAAU/2C,KACR,CAAE4C,GAAI,EAAGo0C,WAAY,EAAGC,KAAM,IAAMC,MAAO,KAC3C,CAAEt0C,GAAI,EAAGo0C,WAAY,EAAGC,KAAM,IAAMC,MAAO,KAC3C,CAAEt0C,GAAI,EAAGo0C,WAAY,EAAGC,KAAM,IAAMC,MAAO,KAC3C,CAAEt0C,GAAI,EAAGo0C,WAAY,EAAGC,KAAM,IAAMC,MAAO,MAK/C,IAAIC,EAASJ,EAAUxtC,QAAO,SAACC,EAAMC,GAAP,OAAoBD,EAAKytC,IAAMxtC,EAAQwtC,IAAMztC,EAAOC,KAAUwtC,IAExFG,EAAUL,EAAUxtC,QAAO,SAACC,EAAMC,GAAP,OAAoBD,EAAOC,EAAUD,EAAOC,KAAUytC,KAC/EhL,EAAiBkK,EAAOlK,gBAAkB,EAEhD,OACE,eAAC31B,GAAA,EAAMC,IAAP,CAAWkK,cAAc,MAAzB,UACE,cAACnK,GAAA,EAAME,KAAP,UAAarV,IACb,cAACmV,GAAA,EAAME,KAAP,UAAa2/B,EAAOv1C,YACpB,cAAC0V,GAAA,EAAME,KAAP,UAAahZ,IACb,cAAC8Y,GAAA,EAAME,KAAP,UAAa,IAAIvX,KAAKk3C,EAAOj8B,IAAIke,mBAAmB,WACpD,eAAC9hB,GAAA,EAAME,KAAP,WACE,cAACjZ,EAAA,EAAD,CACE+D,KAAK,QACL4D,MAAOixC,EAAO5K,QAAU,GAAK,QAAU4K,EAAO5K,QAAU,EAAI,SAAW,MACvE/tC,KACE24C,EAAO5K,QAAU,GACb,eACA4K,EAAO5K,QAAU,GACjB,gBACA4K,EAAO5K,QAAU,GACjB,cACA4K,EAAO5K,QAAU,EACjB,cACA,iBAEL,IACF4K,EAAO5K,QAhBV,OAmBA,cAACj1B,GAAA,EAAME,KAAP,UACGiN,EAAata,KAAI,SAACiP,GAAD,OAChB,qCACGA,EAAY7H,MADf,KACwB6H,EAAY5W,MACjC4W,EAAYk+B,QACb,+BAIN,cAAChgC,GAAA,EAAME,KAAP,CACE/Y,UAAU,UACVsa,SAAUo/B,IAAY,IACtBjlB,QAASilB,IAAY,IAAMA,IAAY,GACvCnlC,SAAUmlC,IAAY,GAJxB,SAMGL,EACEx4B,QAAO,SAAC84B,GAAD,OAAcA,EAASH,MAAQ,OACtC9tC,KAAI,SAACiuC,GAAD,OACH,qCACG1+B,OAAO0+B,EAASz0C,GAAK,GADxB,IAC6BmiB,OAAOsyB,EAASH,MAAMx5B,QAAQ,GACzD,+BAIR,cAACnH,GAAA,EAAME,KAAP,CACE/Y,UAAU,UACVsa,SAAUm/B,IAAW,GACrBhlB,QAASglB,IAAW,IAAMA,IAAW,GACrCllC,SAAUklC,IAAW,IAJvB,SAMGJ,EACEx4B,QAAO,SAAC84B,GAAD,OAAcA,EAASJ,KAAO,OACrC7tC,KAAI,SAACiuC,GAAD,OACH,qCACG1+B,OAAO0+B,EAASz0C,GAAK,GADxB,IAC6BmiB,OAAOsyB,EAASJ,KAAKv5B,QAAQ,GACxD,+BAIR,cAACnH,GAAA,EAAME,KAAP,CACE/Y,UAAU,UACVsa,SAAUk0B,GAAkB,GAC5B/Z,QAAS+Z,GAAkB,IAAMA,GAAkB,GACnDj6B,SAAUi6B,GAAkB,GAJ9B,SAMGnnB,OAAOmnB,GAAgBxuB,QAAQ,KAElC,cAACnH,GAAA,EAAME,KAAP,UAAa2/B,EAAOkB,iBACpB,cAAC/gC,GAAA,EAAME,KAAP,CACE1R,MAAO,EACPyJ,KAAM,cAAChR,EAAA,EAAD,CAAMC,KAAMmmB,EAAO,QAAU,SAAUze,MAAOye,EAAO,QAAU,YA1ErChiB,IA+EzBk0C,MClNAyB,GApBIhsC,aAAS,YAA8C,IAAD,EAA1CisC,EAA0C,EAA1CA,YAAaziB,EAA6B,EAA7BA,MAA6B,EACvC9wB,IAAxBL,EAD+D,EAC/DA,SAAUG,EADqD,EACrDA,UAClBH,EAASc,cAAc,cACvB,IAAMvB,GAAe,OAAL4xB,QAAK,IAALA,GAAA,UAAAA,EAAOplB,cAAP,eAAe/J,QAASmvB,EAAMplB,OAAO/J,OAAS7B,EAAUyB,aACpEiyC,EAAqBD,EAIzB,OAHIr0C,GAAuB,KAAZA,IACbs0C,EAAqBD,EAAc,IAAMr0C,GAGzC,eAACuO,GAAA,EAAD,WACE,cAACjM,EAAA,EAAD,CAASutB,YAAU,EAAnB,sBACA,cAAC,GAAD,CAAuBhtB,IAAKyxC,IAE5B,cAAChyC,EAAA,EAAD,CAASutB,YAAU,EAAnB,oCACA,cAAC,GAAD,IACA,cAACqiB,GAAD,UCfAqC,GAAiB,SAACzjB,GAYtB,MAXiC,CAC/Bx2B,KAAM,WACNO,SAAU,mBAAqBsc,KAAKq9B,SAAW,GAAGjpC,SAAS,IAAIgK,UAAU,GACzEza,UAAWkK,GACXurB,UAAW,GACXh0B,QAAS,GACT6H,OAAQ,CAAE4sB,YAAa,YAAa7qB,MAAOsuC,GAAU,GAAI/hB,KAAM,IAAI32B,MACnE0kB,KAAM,CAAEvK,UAAW4a,EAAO7a,UAAW6a,EAAO1a,YAAa,EAAGC,aAAc,IAAK7P,KAAMtB,IACrFmrB,gBAAiB,KAMfqkB,GAAqB,SAAC5jB,GAY1B,MAXiC,CAC/Bx2B,KAAM,WACNO,SAAU,mBAAqBsc,KAAKq9B,SAAW,GAAGjpC,SAAS,IAAIgK,UAAU,GACzEza,UAAWkK,GACXurB,UAAW,GACXh0B,QAAS,GACT6H,OAAQ,CAAE4sB,YAAa,YAAa7qB,MAAOsuC,GAAU,GAAI/hB,KAAM,IAAI32B,MACnE0kB,KAAM,CAAEvK,UAAW4a,EAAO7a,UAAW6a,EAAO1a,YAAa,EAAGC,aAAc,IAAK7P,KAAMvB,IACrForB,gBAAiB,KAWfskB,GAAW,SAAC,GAA8C,IAA5C1zB,EAA2C,EAA3CA,KAAMH,EAAqC,EAArCA,MAAO+Q,EAA8B,EAA9BA,SAA8B,EACrChmB,mBAAiBoV,EAAK3mB,MADe,mBACtDA,EADsD,KAChDyY,EADgD,OAE3ClH,mBAAiBoV,EAAKpa,SAAS,IAFY,mBAEtDC,EAFsD,KAEnD8tC,EAFmD,OAG3C/oC,mBAAiBoV,EAAKpa,SAAS,IAHY,mBAGtDE,EAHsD,KAGnD8tC,EAHmD,OAIrChpC,mBAAiBoV,EAAKR,KAAKyX,eAJU,mBAItD4c,EAJsD,KAIhDC,EAJgD,KAKvDC,EAAgB,SAACluC,EAAWC,EAAWzM,EAAcw6C,GACzD7zB,EAAKpa,SAAS,GAAKC,EACnBma,EAAKpa,SAAS,GAAKE,EACnBka,EAAK3mB,KAAOA,EACZ2mB,EAAKR,KAAKyX,cAAgB4c,EAC1B,IAAItzB,EAAYV,EAAM5iB,WAAU,SAACkrC,GAAD,OAAqBA,EAAEvuC,WAAaomB,EAAKpmB,YACrE2mB,GAAa,IACfV,EAAMU,GAAaP,EACnB4Q,EAAS,aAAI/Q,MA2DXm0B,EAAoBh0B,EAAKC,iBAAiBhjB,WAAU,SAACq6B,GAAD,OAASA,EAAG9X,KAAKja,OAASvB,OAAgB,EAC9FiwC,EAAgBj0B,EAAKC,iBAAiBhjB,WAAU,SAACq6B,GAAD,OAASA,EAAG9X,KAAKja,OAAStB,OAAiB,EAEjG,OAAQ,eAACqJ,GAAA,EAAD,CAAShU,UAAU,0BAAnB,UACN,cAACuS,GAAA,EAAD,CACE9K,MAAM,MACN0G,QAAQ,SACR2gC,UAAQ,EACRjrC,KAAK,OACLvE,QAjEe,WACjB,IAAI2nB,EAAYV,EAAM5iB,WAAU,SAACkrC,GAAD,OAAqBA,EAAEvuC,WAAaomB,EAAKpmB,YACrE2mB,GAAa,IACfV,EAAM/iB,OAAOyjB,EAAW,GACxBqQ,EAAS,aAAI/Q,MA8DbvmB,UAAU,kCACV0H,MAAO,CAAE6pB,OAAQ,KAEnB,eAACxO,GAAA,EAAD,WACE,eAACA,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,eAAC3X,GAAA,EAAKE,OAAN,CAAa5b,MAAO,GAApB,UACE,8CACA,mBAAGrH,UAAU,OAAb,4CAEF,eAAC+iB,GAAA,EAAKE,OAAN,CAAa5b,MAAO,GAApB,UACE,sCACA,cAAC8P,GAAA,EAAD,CACEzI,SAAU,SAAC/O,EAAGuJ,GAAWsP,EAAQtP,EAAKnF,OAAQ02C,EAAcluC,EAAGC,EAAGtD,EAAKnF,MAAOw2C,IAC9Ex2C,MAAOhE,OAGX,eAACgjB,GAAA,EAAKE,OAAN,CAAajjB,UAAU,OAAvB,UACE,wDACA,cAACmX,GAAA,EAAD,CACElL,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,GAAWmxC,GAAMnxC,EAAKnF,OAAQ02C,GAAevxC,EAAKnF,MAAOyI,EAAGzM,EAAMw6C,IAChFx2C,MAAOwI,EACP+B,OAAK,OAGT,eAACyU,GAAA,EAAKE,OAAN,CAAajjB,UAAU,OAAvB,UACE,0DACA,cAACmX,GAAA,EAAD,CACElL,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,GAAWoxC,GAAMpxC,EAAKnF,OAAQ02C,EAAcluC,GAAIrD,EAAKnF,MAAOhE,EAAMw6C,IAChFx2C,MAAOyI,EACP8B,OAAK,OAGT,eAACyU,GAAA,EAAKE,OAAN,CACE5b,MAAO,GADT,UAGE,oDACA,cAAC8P,GAAA,EAAD,CACElL,KAAK,SACL6G,MAAO,CAAE+f,OAAO,EAAM1kB,QAAS,UAC/B0H,cAAc,QACdnH,SAAU,SAAC/O,EAAGuJ,GAAWsxC,GAAStxC,EAAKnF,OAAQ02C,EAAcluC,EAAGC,EAAGzM,GAAOmJ,EAAKnF,QAC/EA,MAAOw2C,EACPjsC,OAAK,UAIX,cAACyU,GAAA,EAAKjK,IAAN,UACE,eAACiK,GAAA,EAAKE,OAAN,WACE,kDACA,cAACjP,GAAA,EAAD,UACE,cAAC+O,GAAA,EAAD,UACE,eAACA,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,UACE,cAACrQ,GAAA,EAAD,CAAU9P,QAAS63C,EAAejsC,SAAU,SAAC/O,EAAGuJ,GAAeA,EAAKpG,QAjH9D,WACpB,IAAImkB,EAAYV,EAAM5iB,WAAU,SAACkrC,GAAD,OAAqBA,EAAEvuC,WAAaomB,EAAKpmB,YACzE,GAAI2mB,GAAa,EAAG,CAClB,IAAI4C,EAAWtD,EAAMU,GAAWN,iBAAiB9a,QAC/C,SAACC,EAAM8uC,GAAP,OAAiB9uC,EAAO8uC,EAAK10B,KAAKxK,UAAY5P,EAAO8uC,EAAK10B,KAAKxK,YAC/D,GAEEm/B,EAAeb,GAAenwB,GAClCtD,EAAMU,GAAWN,iBAAiBrkB,KAAKu4C,GACvCvjB,EAAS,aAAI/Q,KAwG8Eu0B,GApGtE,WACvB,IAAI7zB,EAAYV,EAAM5iB,WAAU,SAACkrC,GAAD,OAAqBA,EAAEvuC,WAAaomB,EAAKpmB,YACzE,GAAI2mB,GAAa,EAAG,CAClB,IAAI8zB,EAAUx0B,EAAMU,GAAWN,iBAAiBhjB,WAAU,SAACq6B,GACzD,OAAOA,EAAG9X,KAAKja,OAAStB,MAEtBowC,GAAW,IACbx0B,EAAMU,GAAWN,iBAAiBnjB,OAAOu3C,EAAS,GAClDzjB,EAAS,aAAI/Q,MA4FqGy0B,IAAwBnoC,QAAM,EAACC,MAAO,kBAEhJ,cAACiQ,GAAA,EAAKE,OAAN,UACE,cAACrQ,GAAA,EAAD,CACE9P,QAAS43C,EACThsC,SAAU,SAAC/O,EAAGuJ,GAAWA,EAAKpG,QA5FtB,WACxB,IAAImkB,EAAYV,EAAM5iB,WAAU,SAACkrC,GAAD,OAAqBA,EAAEvuC,WAAaomB,EAAKpmB,YACzE,GAAI2mB,GAAa,EAAG,CAClB,IAAI4zB,EAAeV,GAAmB,IACtC5zB,EAAMU,GAAWN,iBAAiBrkB,KAAKu4C,GACvCvjB,EAAS,aAAI/Q,KAuFyC00B,GAnF7B,WAC3B,IAAIh0B,EAAYV,EAAM5iB,WAAU,SAACkrC,GAAD,OAAqBA,EAAEvuC,WAAaomB,EAAKpmB,YACzE,GAAI2mB,GAAa,EAAG,CAClB,IAAI8zB,EAAUx0B,EAAMU,GAAWN,iBAAiBhjB,WAAU,SAACq6B,GACzD,OAAOA,EAAG9X,KAAKja,OAASvB,MAEtBqwC,GAAW,IACbx0B,EAAMU,GAAWN,iBAAiBnjB,OAAOu3C,EAAS,GAClDzjB,EAAS,aAAI/Q,MA2E6D20B,IAC9DroC,QAAM,EACNC,MAAO,wBAKhB4T,EAAKC,iBAAiBjb,KAAI,SAACsyB,GAC1B,OAAO,cAAC,GAAD,CAAoBtX,KAAMA,EAAM4Q,SAAUA,EAAU0G,GAAIA,mBAcrEmd,GAAqB,SAAC,GAAoD,EAAlDz0B,KAAkD,EAA5C4Q,SAA6C,IAAnC0G,EAAkC,EAAlCA,GACxCX,EAAUzhB,GAAiBoiB,EAAG9X,MAC9BqQ,EAAQ9a,GAAeuiB,EAAG9X,MAC9B,OAAO,cAAClS,GAAA,EAAD,UAAUuiB,GAAS8G,EAAQvqB,MAAQ,IAAMuqB,EAAQvqB,MAAQ,IAAM,IAAMqI,GAAqB6iB,EAAG9X,SAchGk1B,GAAc,SAAC,GAAyH,IAAvHxuC,EAAsH,EAAtHA,KAAkB2Z,GAAoG,EAAhH80B,WAAgH,EAApG90B,OAAO+Q,EAA6F,EAA7FA,SAAUgkB,EAAmF,EAAnFA,QAASC,EAA0E,EAA1EA,aAAcC,EAA4D,EAA5DA,gBAAiBC,EAA2C,EAA3CA,mBAA2C,EAC3GnqC,qBAD2G,mBACpIoqC,EADoI,KAC1HC,EAD0H,KAQ3I,OACE,sBAAK37C,UAAU,qFAAf,UACE,eAAC+iB,GAAA,EAAD,CAAM/iB,UAAU,OAAhB,UACE,cAAC+iB,GAAA,EAAKE,OAAN,CAAahB,QAAQ,OAAO5a,MAAO,EAAnC,SACE,cAACkL,GAAA,EAAD,CACE9K,MAAM,QACNnI,QAASm8C,EAFX,SAIE,sBAAMz7C,UAAU,YAAhB,sBAGJ,cAAC+iB,GAAA,EAAKE,OAAN,CACEhB,QAAQ,QACR5a,MAAO,EACPkH,UAAU,QAHZ,SAKE,cAACgE,GAAA,EAAD,CACE/K,UAAQ,EACRsnC,UAAQ,EACRh+B,KAAK,QACL9Q,UAAU,aACVV,QAAS,oBAIf,cAACi5B,GAAA,EAAD,CACEK,KAAM,CACJnxB,MAAO,OACPD,UAAU,EACVwI,UAAU,EACV++B,SAAS,GAEX3W,MACE,CACE,CACEC,SAAU,OACVC,OAAQ,kBACN,eAACC,GAAA,EAAIC,KAAL,WACE,2CACA,cAACrhB,GAAA,EAAD,CACEzI,SAAU,SAAC/O,EAAGuJ,GAAWyyC,EAAYzyC,EAAKnF,OA7CtD6I,GAAQ8uC,IACV9uC,EAAK7M,KAAO27C,EACZJ,EAAQ1uC,KA4CM7I,MAAK,OAAE6I,QAAF,IAAEA,OAAF,EAAEA,EAAM7M,KACbuO,OAAK,SAKb,CACE+pB,SAAU,QACVC,OAAQ,kBACN,eAACC,GAAA,EAAIC,KAAL,CAAUx4B,UAAU,8BAApB,UACGumB,EAAM7a,KAAI,SAACmjC,GACV,OACE,cAAC,GAAD,CAEEnoB,KAAMmoB,EACNtoB,MAAOA,EACP+Q,SAAUA,GAHLuX,EAAEvuC,aAOb,cAAC,GAAD,CACEimB,MAAOA,EACP+Q,SAAUA,SAKlB,CACEe,SAAU,gBACVC,OAAQ,kBAAOijB,GACb,cAAChjB,GAAA,EAAIC,KAAL,CAAUx4B,UAAU,8BAApB,SACE,cAAC,GAAD,CACEu7C,aAAcA,EACdC,gBAAiBA,eAyB/BI,GAAmB,SAAC,GAA8D,IAA5DL,EAA2D,EAA3DA,aAAcC,EAA6C,EAA7CA,gBAA6C,EACnElqC,mBAAiBiqC,EAAajvC,SAAS,IAD4B,mBAC9EC,EAD8E,KAC3E8tC,EAD2E,OAEnE/oC,mBAAiBiqC,EAAajvC,SAAS,IAF4B,mBAE9EE,EAF8E,KAE3E8tC,EAF2E,OAG/DhpC,mBAAiBiqC,EAAaruB,UAHiC,mBAG9E2uB,EAH8E,KAGzEC,EAHyE,OAI7DxqC,mBAAiBiqC,EAAaQ,WAJ+B,mBAI9EC,EAJ8E,KAIxEC,EAJwE,OAK/D3qC,mBAAiBiqC,EAAaW,UALiC,mBAK9EC,EAL8E,KAKzEC,EALyE,KAM/EC,EAAqB,SAAC9vC,EAAWC,EAAWqvC,EAAaG,EAAcG,GAC3EZ,EAAajvC,SAAW,CAACC,EAAG,EAAGC,GAC/B+uC,EAAaruB,SAAW2uB,EACxBN,EAAaQ,UAAYC,EACzBT,EAAaW,SAAWC,EACxBX,EAAgB,gBAAKD,KAEvB,OAAO,eAACvnC,GAAA,EAAD,CAAShU,UAAU,qBAAnB,UACL,+CACA,0FACA,wDACA,cAACmX,GAAA,EAAD,CACElL,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,GAAWmxC,GAAMnxC,EAAKnF,OAAQs4C,GAAoBnzC,EAAKnF,MAAOyI,EAAGqvC,EAAKG,EAAMG,IAC1Fp4C,MAAOwI,IAET,0DACA,cAAC4K,GAAA,EAAD,CACElL,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,GAAWoxC,GAAMpxC,EAAKnF,OAAQs4C,EAAmB9vC,GAAIrD,EAAKnF,MAAO83C,EAAKG,EAAMG,IAC1Fp4C,MAAOyI,IAET,oDACA,cAAC2K,GAAA,EAAD,CACElL,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,GAAW4yC,GAAQ5yC,EAAKnF,OAAQs4C,EAAmB9vC,EAAGC,GAAItD,EAAKnF,MAAOi4C,EAAMG,IAC1Fp4C,MAAO83C,IAET,2CACA,cAAC1kC,GAAA,EAAD,CACElL,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,GAAW+yC,GAAS/yC,EAAKnF,OAAQs4C,EAAmB9vC,EAAGC,EAAGqvC,GAAM3yC,EAAKnF,MAAOo4C,IAC1Fp4C,MAAOi4C,IAET,0CACA,cAAC7kC,GAAA,EAAD,CACElL,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,GAAWkzC,GAAQlzC,EAAKnF,OAAQs4C,EAAmB9vC,EAAGC,EAAGqvC,EAAKG,GAAO9yC,EAAKnF,QACxFA,MAAOo4C,QAYPG,GAAU,SAAC,GAAuC,IAArC/1B,EAAoC,EAApCA,MAAO+Q,EAA6B,EAA7BA,SAClBzqB,EAAQrG,qBAAWsG,IAD4B,EAEzBwE,mBAAS,GAFgB,mBAE9CirC,EAF8C,KAEtCC,EAFsC,OAGvBlrC,mBAAS,GAHc,mBAG9CmrC,EAH8C,KAGlCC,EAHkC,OAIrBprC,mBAAS,IAJY,mBAI9CuY,EAJ8C,KAIpC8yB,EAJoC,OAKrBrrC,mBAAS,GALY,mBAK9CsrC,EAL8C,KAKpCC,EALoC,OAOHvrC,oBAAkB,GAPf,mBAO9CwrC,EAP8C,KAOzBC,EAPyB,OAQjBzrC,qBARiB,mBAQ9C0rC,EAR8C,KAQlCC,EARkC,OASR3rC,oBAAkB,GATV,mBAS9CwpC,EAT8C,KAS/BoC,EAT+B,OAUA5rC,oBAAkB,GAVlB,mBAU9C2pC,EAV8C,KAU3BkC,EAV2B,KA0C/CC,EAAkB,SAACR,GACvB,OAAO/yB,EAAW+yB,GAAY,IAG1BS,EAAc,WAKlB,OAHgCxzB,EAAW,GAAK+yB,GAAY,GAAKA,GAnCzC,IAmC2E/yB,EAAW+yB,GAAY,UAEzEl3C,IAAfs3C,GAA2BA,EAAa,GAAKA,GAtCrD,KA0C5B,OAAO,eAAChpC,GAAA,EAAD,CAAShU,UAAU,qBAAnB,UACL,0CACA,4DACA,eAAC+iB,GAAA,EAAD,WACE,cAACA,GAAA,EAAKjK,IAAN,CAAU9Y,UAAU,SAApB,SACE,cAAC+iB,GAAA,EAAKE,OAAN,UACE,cAAC9L,GAAA,EAAD,CACErE,MAAO,kBACP/J,MAAOwzC,EAAS,IAAMA,GAAU,EAChCtwC,KAAK,SACLyC,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAaszC,GAAWtzC,EAAKnF,QACvCA,MAAOw4C,EACPttB,IAAI,UAIV,eAAClM,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,eAAC3X,GAAA,EAAKE,OAAN,WACE,cAAC7S,EAAA,EAAD,CACEvB,QACE,qBAAK7O,UAAU,OAAf,SACE,4CACE,cAACF,EAAA,EAAD,CACEC,KAAK,kBACLC,UAAU,cAKlBmO,QAAO,wFAGT,cAACgJ,GAAA,EAAD,CACEzI,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAaA,EAAKnF,OAAS44C,GAAazzC,EAAKnF,QACvD+O,MAAO,CAAE+f,OAAO,EAAM1kB,QAAS,UAC/B0H,cAAc,QACdxH,YAAY,aACZpC,KAAK,SACLlI,MAAO8lB,EACP9gB,MAAO8gB,EAAW,EAClBoF,IAAK,EACL3gB,OAAK,OAGT,eAACyU,GAAA,EAAKE,OAAN,WACE,cAAC7S,EAAA,EAAD,CACEvB,QACE,qBAAK7O,UAAU,OAAf,SACE,6CACE,cAACF,EAAA,EAAD,CACEC,KAAK,kBACLC,UAAU,cAKlBmO,QAAO,qGAjGS,GAiGT,OAET,cAACgJ,GAAA,EAAD,CACEzI,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAaA,EAAKnF,OAAS84C,GAAa3zC,EAAKnF,QACvDsK,YAAY,mBACZyE,MAAO,CAAE+f,OAAO,EAAM1kB,QAAS,UAC/B0H,cAAc,QACd9M,MAAO6zC,EAxGS,IAwGuBA,EAAW,EAClD3wC,KAAK,SACLgjB,IAAK,EACL3gB,OAAK,UAIX,eAACyU,GAAA,EAAKjK,IAAN,CACE4hB,QAAS,EACT1X,cAAc,SAFhB,UAIE,cAACD,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAApB,SACE,sBAAKrH,UAAU,OAAf,UACE,cAACoQ,EAAA,EAAD,CACEvB,QACE,qBAAK7O,UAAU,OAAf,SACE,6CAEE,cAACF,EAAA,EAAD,CAAMC,KAAK,kBAAkBC,UAAU,cAI7CmO,QAAO,qGA/HS,GA+HT,OAET,cAACgJ,GAAA,EAAD,CACEzI,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAaA,EAAKnF,OAAS84C,GAAa3zC,EAAKnF,QACvDsK,YAAY,mBACZyE,MAAO,CAAE+f,OAAO,EAAM1kB,QAAS,UAC/B0H,cAAc,QACd9M,MAAO6zC,EAAW,IAAMA,EAAW,EACnC3wC,KAAK,SACLqC,OAAK,SAIX,eAACyU,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAApB,UACE,cAAC+I,EAAA,EAAD,CACEvB,QACE,kDACE,cAAC/O,EAAA,EAAD,CACEC,KAAK,kBACLC,UAAU,YAIhBmO,QAAQ,sDAEV,cAACyE,GAAA,EAAD,CAAUC,QAAM,EAACnE,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAa6zC,IAAmB7zC,EAAKpG,eAElE,cAACigB,GAAA,EAAKE,OAAN,CAAa5b,MAAO,EAApB,cACkB3B,IAAfs3C,GACC,mCACE,cAAC7lC,GAAA,EAAD,CACEzI,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAaA,EAAKnF,OAASk5C,GAAe/zC,EAAKnF,QACzDsK,YAAY,qBACZyE,MAAO,CAAE+f,OAAO,EAAM1kB,QAAS,YAC/B0H,cAAc,QACd5J,KAAK,SACLkkB,KAAM,EACNpnB,MAAOi0C,EApKO,IAoK6BA,EAAa,EACxD/tB,IAAK,EACL3gB,OAAK,QAKb,cAACyU,GAAA,EAAKE,OAAN,CACE5b,MAAO,EADT,UAG2B,IAAxBy1C,GACC,sBAAK98C,UAAU,GAAf,UACE,cAAC4S,GAAA,EAAD,CACElE,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAag0C,IAAoBh0C,EAAKpG,SAAUoG,EAAKpG,UAC/D9C,UAAU,cAHd,cAME,cAAC4S,GAAA,EAAD,CACElE,SAAU,SAAC/O,EAAGuJ,GAAJ,OAAai0C,IAAwBj0C,EAAKpG,SAAUoG,EAAKpG,UACnE9C,UAAU,cARd,kBAcJ,eAAC+iB,GAAA,EAAKE,OAAN,CACE1U,UAAU,SACVlH,MAAO,GAFT,UAIE,cAACkL,GAAA,EAAD,CACE9K,MAAM,QACNsL,UAAWsqC,IACX/9C,QAlMO,WACf,GAAIi9C,GAAU,EACZ1vC,EAAM9D,MAAM,4CAId,GAAKq0C,EAAgBR,GAArB,CAKA,IAAIU,EAA2B,aAAI,IAAIlyC,MAAMmxC,IAAS7wC,KAAI,SAAC3H,EAAYiB,GAAb,OAA+Bu4C,GAASd,EAAaz3C,EAAO43C,EAAU/yB,EAAUmzB,MACtIlC,GACFwC,EAASl7C,SAAQ,SAACskB,GAChBA,EAAKC,iBAAiBrkB,KAAK03C,GAAenwB,OAG1CoxB,GACFqC,EAASl7C,SAAQ,SAACskB,GAChBA,EAAKC,iBAAiBrkB,KAAK63C,GAAmB,QAIlD7iB,EAAS,GAAD,oBAAK/Q,GAAL,aAAe+2B,KACvBZ,EAAQD,EAAaF,QAjBnB1vC,EAAM9D,MAAM,6DA4LN/I,UAAU,OACVsO,OAAK,EALP,uBASmB,IAAlB+uC,KACC,cAACxsC,GAAA,EAAD,CACEyJ,UAAQ,EADV,2GAYNijC,GAAW,SAACrpC,EAAWspC,EAAgB3zB,EAAkBoT,GAS7D,MARyB,CACvB38B,SAAU,YAAcsc,KAAKq9B,SAAW,GAAGjpC,SAAS,IAAIgK,UAAU,GAClEza,UlEjmB0B,OkEkmB1BR,KAAM,WAAamU,EACnB5H,SAAU,CAAO4H,EAAI,EAAV,GAAc,EAAG,GAAKupC,iBAAMvpC,EAAI,IAC3CgS,KAAM,CAAEja,KlE7lBsB,WkE6lBI0xB,cAAe,KACjDhX,iBAAkB+2B,GAAQF,EAAQ3zB,EAAUoT,KAmB1Cid,GAAY,SAACyD,EAAatgB,GAC9B,OAAIA,GACMsgB,EAAMtgB,GAAW,EAEpBsgB,EAAM,GAGTD,GAAU,SAACd,EAAkB/yB,EAAkB+zB,GACnD,IAAIC,EAAgC,GAQpC,OANAzyC,MAAM+V,KAAK/V,MAAMwxC,GAAU10B,QAAQ9lB,SAAQ,SAACm0B,GAC1CnrB,MAAM+V,KAAK/V,MAAMwyC,GAA4B,GAAG11B,QAAQ9lB,SAAQ,SAACi7B,GAC/DwgB,EAAIv7C,KA3BK,SAAC4R,EAAW4pC,EAAsBzgB,EAAkBugB,GAYjE,MAXiC,CAC/B79C,KAAM,WACNO,SAAU,mBAAqBsc,KAAKq9B,SAAW,GAAGjpC,SAAS,IAAIgK,UAAU,GACzEza,UAAW,GACXy1B,UAAW,GACXh0B,QAAS,GACT6H,OAAQ,CAAE4sB,YAAa,YAAa7qB,MAAOsuC,GAAUhmC,EAAGmpB,GAAUlF,KAAM,IAAI32B,MAC5E0kB,KAAM63B,GAAmB7pC,EAAG4pC,EAAczgB,EAASugB,GACnD9nB,gBAAiB,IAkBNkoB,CAAOznB,EAAO1M,EAAW+yB,EAAUvf,EAASugB,UAIlDC,GAGHE,GAAqB,SAACxnB,EAAeunB,EAAsBzgB,EAAkB4gB,GACjF,IAAI/3B,EAEJ,QAAgBxgB,IAAZ23B,QAA0C33B,IAAjBu4C,EAA4B,CACvD,IAAIC,EAAUC,GAAiB9gB,EAAS4gB,GACxC/3B,EAAO,CACLvK,UAAWmiC,EAAevnB,EAC1B7a,UAAWoiC,GAAgBvnB,EAAQ,GACnC1a,YAAaqiC,EAAQ,GACrBpiC,aAAcoiC,EAAQ,GACtBjyC,KAAM,cAGRia,EAAO,CACLvK,UAAWmiC,EAAevnB,EAC1B7a,UAAWoiC,GAAgBvnB,EAAQ,GACnC1a,YAAa,EACbC,aAAc,IACd7P,KAAM,SAGV,OAAOia,GAGHi4B,GAAmB,SAAC9gB,EAAiB4gB,GACzC,IAAIG,EAAsB,IAAMH,EAChC,MAAO,CAACG,EAAc/gB,EAAS+gB,GAAe/gB,EAAU,KAkM3CghB,GAnJExwC,aAAS,YAA+B,IAAD,EAA3BwpB,EAA2B,EAA3BA,MACrBxqB,EAAQrG,qBAAWsG,IAD6B,EAEXvG,IAAnCF,EAF8C,EAE9CA,UAAWF,EAFmC,EAEnCA,UAAWD,EAFwB,EAExBA,UACrB,OAALmxB,QAAK,IAALA,GAAA,UAAAA,EAAOplB,cAAP,eAAe/J,SAAU7B,EAAUyB,eAAiBuvB,EAAMplB,OAAO5L,UAAUyB,cAC7EzB,EAAUuI,WAAWyoB,EAAMplB,OAAO5L,UAAUyB,cAE9C5B,EAASc,cAAc,aACvB,IAPsD,EAW1BsK,qBAX0B,mBAW/CgtC,EAX+C,KAWvCrb,EAXuC,OAY9B3xB,qBAZ8B,mBAY/C1E,EAZ+C,KAYzC0uC,EAZyC,OAa5BhqC,mBAAyB,IAbG,mBAa/CiV,EAb+C,KAaxC+Q,EAbwC,OAcdhmB,qBAdc,mBAc/CiqC,EAd+C,KAcjCC,EAdiC,OAedlqC,oBAAkB,GAfJ,mBAe/CitC,EAf+C,KAejCC,EAfiC,OAgBnBzxC,aACjC1G,EAAUyB,aAAe,gBAAkBzB,EAAUyB,aAAe,MACpE,SAACQ,GAAD,OAAS6B,EAAYX,EAAYlB,EAAKnC,EAAU6G,uBAChD,IAHYyxC,EAhBwC,EAgB9Cv1C,KAAiBH,EAhB6B,EAgB7BA,MAmBzB,GAdA2U,qBAAU,WACJ9Q,GA9De,SAAC8xC,EAA2BpB,GACjD,GAAIoB,EAAUv8C,SAAWm7C,EAASn7C,OAChC,OAAO,EAET,IAAIw8C,GAAe,EAyBnB,OAxBAD,EAAUt8C,SAAQ,SAACw8C,GACjB,IAAIC,EAA+BvB,EAAS3uC,MAAK,SAACkgC,GAAD,OAAqBA,EAAEvuC,WAAas+C,EAAGt+C,YACnFu+C,GAIDA,EAAGvyC,SAAS,KAAOsyC,EAAGtyC,SAAS,IAAMuyC,EAAGvyC,SAAS,KAAOsyC,EAAGtyC,SAAS,IAIpEuyC,EAAG9+C,OAAS6+C,EAAG7+C,MAIf6+C,EAAG14B,KAAKyX,gBAAkBkhB,EAAG34B,KAAKyX,eAKlCihB,EAAGj4B,iBAAiBxkB,SAAW08C,EAAGl4B,iBAAiBxkB,SAhBrDw8C,GAAe,MAqBZA,EAiCOG,CAAelyC,EAAK2Z,MAAOA,KACrC3Z,EAAK2Z,MAAQA,EACb+0B,EAAQ74C,KAAKC,MAAMD,KAAKE,UAAUiK,QAEnC,CAACA,EAAM2Z,EAAO+0B,IAEjB59B,qBAAU,WApCmB,IAACqhC,EAAuBC,EAqC/CpyC,GAAQ2uC,IArCgBwD,EAqCuBnyC,EAAKo4B,cArCLga,EAqCoBzD,EAnCvEwD,EAAOzyC,SAAS,KAAO0yC,EAAM1yC,SAAS,IACtCyyC,EAAOzyC,SAAS,KAAO0yC,EAAM1yC,SAAS,IACtCyyC,EAAO7xB,WAAa8xB,EAAM9xB,YAkCxBtgB,EAAKo4B,cAAgBuW,EACrBD,EAAQ74C,KAAKC,MAAMD,KAAKE,UAAUiK,QAEnC,CAACA,EAAM2uC,EAAcD,KAEnBmD,EACH,OAAO,cAACpxC,EAAA,EAAD,CAAQzF,QAAM,EAAC/D,KAAK,SAG7B,KAAK+I,GAAQA,EAAKtM,WAAa+F,EAAUyB,eACnC22C,EAAW,CAEb,IAAIQ,EAAwBx8C,KAAKC,MAAMD,KAAKE,UAAU87C,IAClDQ,QAA6Bv5C,IAAlBu5C,EAAQ14B,QACrB04B,EAAQ14B,MAAMnkB,SAAQ,SAACysC,GACrBA,EAAEloB,iBAAiBvkB,SAAQ,SAAC47B,EAAIh5B,GAC9Bg5B,EAAGn0B,OAAO+B,MAAQ5G,EAAQ,QAG9Bs2C,EAAQ2D,GACR3nB,EAAS70B,KAAKC,MAAMD,KAAKE,UAAUs8C,EAAQ14B,SAC3Ci1B,EAAgB/4C,KAAKC,MAAMD,KAAKE,UAAUs8C,EAAQja,kBAKxD,IAAMka,EAAQ,uCAAG,sBAAA92C,EAAA,sEACMoB,EAAY,oBAAqBrD,EAAU6G,mBAAoB,CAClF3D,OAAQ,MACRC,KAAMsD,EACNhD,KAAK,IAJQ,cAOFf,IACXgE,EAAMgL,QAAQ,eACdC,aAAO,gBAAkBzR,EAAUyB,cACnC02C,GAAgB,IAEhB3xC,EAAM9D,MAAM,sBAEdy1C,GAAgB,GAdD,2CAAH,qDAiBd,OADA5+C,QAAQC,IAAI4+C,GACL,mCACL,eAACjlC,GAAA,EAAOC,SAAR,CAAiBta,GAAI8R,WAArB,UACE,eAAC,WAAD,WAEE,cAAC,GAAD,CACErE,KAAMA,EACNs2B,YAxEY,SAACh/B,GACnB,IAAIi7C,EAAS,OAAGvyC,QAAH,IAAGA,OAAH,EAAGA,EAAM2Z,MAAM5X,MAAK,SAACkgC,GAAD,OAAqBA,EAAEvuC,WAAa4D,KACrE++B,EAAUkc,IAuEJlc,UAAWA,EACXp8B,oBAAqB,kBAAM,GAC3Bs8B,YAAY,EACZC,YAAY,IAGd,cAAC,GAAD,CACEx2B,KAAMA,EACNyuC,WAAYiD,EACZ/3B,MAAOA,EACP+Q,SAAUA,EACVgkB,QAASA,EACTC,aAAcA,EACdC,gBAAiBA,EACjBC,mBAAoB,kBAAM+C,GAAgB,SAG9C,eAAC1X,GAAA,EAAD,CAAO5uB,KAAMqmC,EAAb,UACE,cAACzX,GAAA,EAAMv5B,OAAP,2BACA,cAACu5B,GAAA,EAAMt5B,QAAP,UACE,eAACuV,GAAA,EAAD,WACE,eAACA,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,IACA,cAACF,GAAA,EAAKE,OAAN,kBACA,cAACF,GAAA,EAAKE,OAAN,qBAEF,eAACF,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,oBAAgC,cAACF,GAAA,EAAKE,OAAN,UAAcw7B,EAAUl4B,MAAMpkB,SAC9D,cAAC4gB,GAAA,EAAKE,OAAN,iBAAcrW,QAAd,IAAcA,OAAd,EAAcA,EAAM2Z,MAAMpkB,YAE5B,eAAC4gB,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,qCACA,eAACF,GAAA,EAAKE,OAAN,gBAAgBw7B,EAAUzZ,cAAc14B,SAAS,GAAjD,MAAwDmyC,EAAUzZ,cAAc14B,SAAS,MACzF,eAACyW,GAAA,EAAKE,OAAN,uBAAgBrW,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAMo4B,cAAc14B,SAAS,GAA7C,aAAoDM,QAApD,IAAoDA,OAApD,EAAoDA,EAAMo4B,cAAc14B,SAAS,SAEnF,eAACyW,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,qCACA,cAACF,GAAA,EAAKE,OAAN,UAAcw7B,EAAUzZ,cAAc9X,WACtC,cAACnK,GAAA,EAAKE,OAAN,iBAAcrW,QAAd,IAAcA,OAAd,EAAcA,EAAMo4B,cAAc9X,mBAIxC,eAAC4Z,GAAA,EAAMG,QAAP,WACE,cAAC10B,GAAA,EAAD,CACE9K,MAAM,OACNnI,QAAS,WAAQk/C,GAAgB,IAFnC,oBAMA,cAACjsC,GAAA,EAAD,CACE9K,MAAM,OACNnI,QAAS4/C,EAFX,SAIE,sBAAMl/C,UAAU,mBAAhB,0BAIN,cAACwZ,GAAA,EAAD,CAAQ9R,MAAO,CAAE6pB,OAAQ,KAAmG3pB,OAAQmB,EAApI,SACE,cAACwE,EAAA,EAAD,CAAQpO,GAAG,KAAKqI,UAAQ,EAACsJ,MAAI,EAA7B,gDCnvBOsuC,GAlHKvxC,aAAS,WAAO,IAAD,EACDtH,IAAxBL,EADyB,EACzBA,SAAUC,EADe,EACfA,UADe,EAEJmL,qBAFI,mBAE1B+tC,EAF0B,KAEfC,EAFe,OAGOhuC,mBAAc,EAAC,GAAM,GAAM,IAHlC,mBAG1BiuC,EAH0B,KAGZC,EAHY,KAK3BC,EAAU,uCAAG,WAAOC,GAAP,iBAAAt3C,EAAA,6DACXE,EAAM,uBAAyBq3C,GAC/BC,EAAW,IAAIC,UACZC,OAAO,OAAQJ,GACxB9/C,QAAQC,IAAI+/C,EAAS91C,IAAI,SAJR,KAKVtB,MALU,KAKJF,EALI,KAOFy3C,QAPE,SAQqB55C,EAAU6G,mBAR/B,+BAQE,UARF,WAQbtE,cARa,+BAUTk3C,EAVS,MAMfv2C,OAAQ,OACRZ,QAPe,KAUfa,KAVe,yFAAH,sDA2BV02C,EAAgB,SAAC9rC,EAAWvU,GAEhC6I,MADY,uBAAyB0L,EAC1B,CACT7K,OAAQ,WAEPV,MAAK,SAACJ,GAAD,OAAc3I,QAAQC,IAAI,aAAc0I,MAC7C6K,OAAM,SAACrK,GAAD,OAAWnJ,QAAQC,IAAI,UAAWkJ,OAtCZ,EAyCHuI,qBAzCG,mBAyC1BquC,EAzC0B,KAyCjBM,EAzCiB,KA4CjC,OAFA/5C,EAASc,cAAc,gBAGrB,cAACgN,GAAA,EAAD,UACE,eAACtB,GAAA,EAAD,CAAM25B,SA5BW,SAAC1sC,GACpBA,EAAEugD,iBACGP,EAILF,EAAWJ,GACR12C,MAAK,SAACJ,GAAD,OAAc3I,QAAQC,IAAI,aAAc0I,MAC7C6K,OAAM,SAACrK,GAAD,OAAWnJ,QAAQC,IAAI,UAAWkJ,MALzCo3C,MAAM,gCAyBN,UACE,sHACA,uBAAOj7C,GAAG,YAAY+G,KAAK,OAAOyC,SApBnB,SAAC/O,GACpB2/C,EAAQ3/C,EAAEsH,OAAOm5C,MAAM,KAmBuC14C,MAAO,CAAEiqB,SAAU,QAAS1hB,OAAQ,UAC9F,cAACqV,GAAA,EAAD,CACE+6B,WAAS,EACT34C,MAAO,CAAEuI,OAAQ,QACjB5B,YAAY,uBACZ3E,QAAS,CACP,CAAE3F,MAAO,EAAGmK,KAAM,KAClB,CAAEnK,MAAO,EAAGmK,KAAM,KAClB,CAAEnK,MAAO,EAAGmK,KAAM,MAEpBnK,MAAO47C,EACPjxC,SAAU,SAAC/O,EAAD,OAAMoE,EAAN,EAAMA,MAAN,OAAkBk8C,EAAWl8C,MAEzC,4BACE,eAACwO,GAAA,EAAD,CAAQtG,KAAK,SAAS6E,MAAI,EAACwvC,SAAO,EAACzqC,cAAc,QAAQ9C,UAAWssC,IAAcM,EAAlF,mBAEE,cAAC7/C,EAAA,EAAD,CAAMC,KAAK,qBAGdw/C,EAAa,IACZ,eAACvrC,GAAA,EAAD,WACE,cAACzD,EAAA,EAAD,CACEC,IAAI,kBACJ+vC,QAAS,SAAC5gD,GACRA,EAAE6gD,cAAc94C,MAAMitB,QAAU,OAChC6qB,GAAgB,SAACD,GAAD,OACdA,EAAa7zC,KAAI,SAACipB,EAAS3vB,GAAV,OAAuC,IAAVA,GAAsB2vB,WAI1E,cAACpiB,GAAA,EAAD,CAAQjT,QAAS,SAACK,GAAD,OAAOqgD,EAAc,IAAtC,+BAGHT,EAAa,IACZ,eAACvrC,GAAA,EAAD,WACE,cAACzD,EAAA,EAAD,CACEC,IAAI,kBACJ+vC,QAAS,SAAC5gD,GACRA,EAAE6gD,cAAc94C,MAAMitB,QAAU,OAChC6qB,GAAgB,SAACD,GAAD,OACdA,EAAa7zC,KAAI,SAACipB,EAAS3vB,GAAV,OAAuC,IAAVA,GAAsB2vB,WAI1E,cAACpiB,GAAA,EAAD,CAAQjT,QAAS,SAACK,GAAD,OAAOqgD,EAAc,IAAtC,+BAGHT,EAAa,IACZ,eAACvrC,GAAA,EAAD,WACE,cAACzD,EAAA,EAAD,CACEC,IAAI,kBACJ+vC,QAAS,SAAC5gD,GACRA,EAAE6gD,cAAc94C,MAAMitB,QAAU,OAChC6qB,GAAgB,SAACD,GAAD,OACdA,EAAa7zC,KAAI,SAACipB,EAAS3vB,GAAV,OAAuC,IAAVA,GAAsB2vB,WAI1E,cAACpiB,GAAA,EAAD,CAAQjT,QAAS,SAACK,GAAD,OAAOqgD,EAAc,IAAtC,uC,0FC7FRS,GAAcC,KAAE5vC,KAAK,CACvB6vC,QCnBa,yiFDoBbC,UAAWC,KACXC,SAAU,CAAC,GAAI,IACfC,WAAY,CAAC,GAAI,MAGnBL,KAAEM,OAAOC,UAAUv3C,QAAQoH,KAAO2vC,GAQlC,IAAMS,GAAsB,SAACr3C,GAC3B,OAAQA,GACN,KAAM,EACJ,MAAO,OAET,KAAK,EACH,MAAO,QAET,KAAK,EACH,MAAO,SAET,KAAK,EACH,MAAO,MAET,QACE,MAAO,SAMPs3C,GAAatzC,aAAS,YAAuD,IAApDpI,EAAmD,EAAnDA,QAASi2C,EAA0C,EAA1CA,SAAU0F,EAAgC,EAAhCA,SACxCj7C,EAAcI,IAAdJ,UADwE,EAElD4G,aAC5B,gBAAkBtH,GAClB,SAAC6C,GAAD,OAAS6B,EAAYX,EAAYlB,EAAKnC,EAAU6G,uBAChD,IAHYJ,EAFkE,EAExE1D,KAAYH,EAF4D,EAE5DA,MAF4D,EAOhCgE,aAC9C,sBAAwBtH,GACxB,SAAC6C,GAAD,OAAS2B,EAAuBT,EAAYlB,EAAKnC,EAAU6G,uBAC3D,CAAEuQ,gBAAiB,MAHP8jC,EAPkE,EAOxEn4C,KAAyBo4C,EAP+C,EAOtDv4C,MAK1B,IAAK6D,EACH,OAAO,cAACoH,GAAA,EAAD,yBACF,GAAIjL,EACT,OAAO,cAACiL,GAAA,EAAD,mCAGT,IAAKqtC,EACH,OAAO,cAACrtC,GAAA,EAAD,yBACF,GAAIstC,EACT,OAAO,cAACttC,GAAA,EAAD,mCAET,IAII1G,EAAoBpC,GAAuBm2C,GAC3C55C,EAAQy5C,GAAoB5zC,GAChC,OACE,cAACi0C,GAAA,EAAD,CACE1iB,OAAQ,CAACjyB,EAAKo4B,cAAckX,SAAUtvC,EAAKo4B,cAAc+W,WACzDyF,OAlCa,GAmCbC,YAAa,CAAEC,UAAWj6C,EAAOA,MAAOA,EAAOk6C,YAAa,GAC5DC,cAAe,CACb5/B,MAZkB,WACtBo/B,EAAS37C,EAASi2C,UAyBhBmG,GAAc,SAAC,GAAqF,IAAnFC,EAAkF,EAAlFA,SAAUx1C,EAAwE,EAAxEA,SAAU80C,EAA8D,EAA9DA,SAAUW,EAAoD,EAApDA,YAAaC,EAAuC,EAAvCA,eAChE,OACE,cAAChuC,GAAA,EAAD,CACEtM,MAAO,CACL4E,SAAU,WACV+R,MAAO,OACP1W,IAAK,EACLsW,SAAU,QACV0T,SAAU,QACVzR,gBAAiB,UACjBwT,aAAc,OACdnC,OAAQ,QATZ,SAYE,eAACxO,GAAA,EAAD,WACE,cAACA,GAAA,EAAKjK,IAAN,CAAUmpC,UAAQ,EAAlB,SACE,oBAAIjiD,UAAU,UAAU0H,MAAO,CAAED,MAAO,WAAxC,SACIs6C,EAAwB,eAAzB,aAGHA,GACAD,EAAS3/C,QACT2/C,EAASp2C,KAAI,SAACjG,EAAST,GAAV,OACX,cAAC+d,GAAA,EAAKjK,IAAN,CACEmpC,UAAQ,EACRjiD,UAAU,WAEVV,QAAS,kBAAM8hD,EAAS37C,EAAQnF,SAAUmF,EAAQ1F,OAJpD,SAME,cAACmiD,GAAD,CAAoBz8C,QAASA,EAAQnF,SAAUo7C,SAAUj2C,EAAQ1F,KAAMqhD,SAAUA,KAH5Ep8C,MAMV+8C,GACC,cAACh/B,GAAA,EAAKjK,IAAN,CAAUmpC,UAAQ,EAAlB,SACE,cAACE,GAAD,CAAmBC,YAAa,kBAAMJ,GAAe,IAAQ11C,SAAUA,OAGzEy1C,GACA,cAACh/B,GAAA,EAAKjK,IAAN,CAAUmpC,UAAQ,EAACjiD,UAAU,WAAWuO,UAAU,QAAlD,SACE,cAACgE,GAAA,EAAD,CACE9K,MAAM,QACNzH,UAAU,OACVV,QAAS,WACP0iD,GAAgBD,IAJpB,SAQE,sBAAM/hD,UAAU,YAAhB,qCAeRmiD,GAAoBt0C,aAAS,YAAwD,IAArDvB,EAAoD,EAApDA,SAAU81C,EAA0C,EAA1CA,YACxCv1C,EAAQrG,qBAAWsG,IAD+D,EAE7CvG,IAAnCJ,EAFgF,EAEhFA,UAAWC,EAFqE,EAErEA,oBAFqE,EAGxDkL,mBAAiB,IAHuC,mBAGjFoqC,EAHiF,KAGvEC,EAHuE,OAItDrqC,mBAAc,IAJwC,mBAIjF+wC,EAJiF,KAItEC,EAJsE,KAOpFl8C,EAAoBm8C,uBAAyBF,GAC/CC,EAAal8C,EAAoBm8C,sBAEnC,IAAMC,EAAO,uCAAG,8BAAAp6C,EAAA,yDACG,KAAbszC,EADU,uBAEZ7uC,EAAM9D,MAAM,4BAFA,6BAKI,KAAds5C,EALU,uBAMZx1C,EAAM9D,MAAM,6BANA,6BASTuD,EATS,uBAUZO,EAAM9D,MAAM,sBAVA,iCAaV6D,EAAqB,CACvB2Z,MAAO,GACPjmB,SAAU,GACVC,UpEpLwB,OoEqLxBu7B,OAAQ,CAAExvB,SAAU,CAAC,EAAG,EAAG,IAC3B04B,cAAe,CACbkX,SAAU5vC,EAAWA,EAAS6vC,IAAM,EACpCjvB,SAAU,EACV6uB,UAAWzvC,EAAWA,EAASm2C,IAAM,EACrCn2C,SAAU,CAAC,EAAG,EAAG,GACjBhM,SAAU,GACVC,UpEvL+B,gBoEyLjCR,KAAM27C,EACNxuC,WAAYm1C,GA3BA,UA6BO74C,EAAY,mBAAoBrD,EAAU6G,mBAAoB,CACjF3D,OAAQ,MACRC,KAAMsD,EACNhD,KAAK,IAhCO,SA6BVrB,EA7BU,QAkCDM,IACXiP,aAAO,gBACPsqC,MAEI75C,GAAUsE,EAAM9D,MAAM,gCAAkCR,EAASsB,QACrEjK,QAAQmJ,SAvCI,4CAAH,qDA2Cb,OACE,qBAAK/I,UAAU,iBAAiB0H,MAAO,CAAEL,MAAO,MAAOmqB,OAAQ,WAA/D,SACE,eAACzO,GAAA,EAAD,WACGzW,GACC,eAAC,WAAD,WACE,cAACyW,GAAA,EAAKjK,IAAN,UACE,eAACiK,GAAA,EAAKE,OAAN,CAAa1U,UAAU,OAAvB,UACE,cAAC6B,EAAA,EAAD,CACEvB,QACE,6CAEE,cAAC/O,EAAA,EAAD,CAAMC,KAAK,kBAAkBC,UAAU,YAG3CmO,QAAQ,+EACR7B,SAAS,gBAEX,cAAC6K,GAAA,EAAD,CACE7I,OAAK,EACLI,SAAU,SAAC/O,EAAGiU,GAAJ,OAAU+nC,EAAY/nC,EAAE7P,QAClCA,MAAO23C,EACPrtC,YAAY,sCAIlB,cAAC0U,GAAA,EAAKjK,IAAN,UACE,eAACiK,GAAA,EAAKE,OAAN,CAAa1U,UAAU,OAAvB,UACE,cAAC6B,EAAA,EAAD,CACEvB,QACE,8CAEE,cAAC/O,EAAA,EAAD,CAAMC,KAAK,kBAAkBC,UAAU,YAG3CmO,QAAQ,8EACR7B,SAAS,gBAEX,cAAC6K,GAAA,EAAD,CACE7I,OAAK,EACLD,YAAY,+BACZK,SAAU,SAAC/O,EAAGiU,GAAJ,OAAU0uC,EAAa1uC,EAAE7P,QACnCA,MAAOs+C,aAMf/1C,GACA,eAACyW,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,UACE,cAAC7S,EAAA,EAAD,CACEvB,QACE,gCACE,kFACA,cAAC/O,EAAA,EAAD,CAAMC,KAAK,kBAAkBC,UAAU,OAAO6D,KAAK,aAGvDsK,QAAQ,yGACR7B,SAAS,iBAGb,cAACyW,GAAA,EAAKE,OAAN,UACE,cAAC1Q,GAAA,EAAD,CAAQ9K,MAAM,OAAOzH,UAAU,OAAOV,QAAS,kBAAM8iD,KAAetxC,KAAK,SAAzE,yBAMLxE,GACC,qCACE,cAAC8D,EAAA,EAAD,CACEvB,QACE,qBAAI7O,UAAU,WAAd,6BAEE,cAACF,EAAA,EAAD,CAAMC,KAAK,kBAAkBC,UAAU,YAG3CmO,QAAQ,+GACR7B,SAAS,gBAEX,eAACyW,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,eAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,OAAvB,UACE,0CADF,IACyBjC,EAAWA,EAAS6vC,IAAIn8B,QAAQ,GAAK,SAO9D,eAAC+C,GAAA,EAAKE,OAAN,CAAa1U,UAAU,OAAvB,UACE,2CADF,IAC0BjC,EAAWA,EAASm2C,IAAIziC,QAAQ,GAAK,eAUpE1T,GACC,cAACyW,GAAA,EAAKjK,IAAN,UACE,eAACiK,GAAA,EAAKE,OAAN,WACE,cAAC1Q,GAAA,EAAD,CAAQ9K,MAAM,OAAOnI,QAAS,kBAAM8iD,KAAetxC,KAAK,SAAxD,oBAGA,cAACyB,GAAA,EAAD,CACE9K,MAAM,QACNzH,UAAU,OACVV,QAASkjD,EACT1xC,KAAK,YACLiC,UAAWzG,IAAa+1C,IAAc3G,EACtClpC,MAAQlG,GAAa+1C,GAAc3G,EAAsD,OAA3C,yCANhD,SAQE,sBAAM17C,UAAU,YAAhB,iCAgBVkiD,GAAqBr0C,aAAS,YAA+D,IAA5DpI,EAA2D,EAA3DA,QAASi2C,EAAkD,EAAlDA,SAAU0F,EAAwC,EAAxCA,SAChDj7C,EAAcI,IAAdJ,UADwF,EAElE4G,aAC5B,gBAAkBtH,GAClB,SAAC6C,GAAD,OAAS6B,EAAYX,EAAYlB,EAAKnC,EAAU6G,uBAChD,IAHYJ,EAFkF,EAExF1D,KAAYH,EAF4E,EAE5EA,MAF4E,EAOhDgE,aAC9C,sBAAwBtH,GACxB,SAAC6C,GAAD,OAAS2B,EAAuBT,EAAYlB,EAAKnC,EAAU6G,uBAC3D,CAAEuQ,gBAAiB,MAHP8jC,EAPkF,EAOxFn4C,KAAyBo4C,EAP+D,EAOtEv4C,MAM1B,IAAK6D,EACH,OACE,cAACoH,GAAA,EAAD,CAASxM,UAAQ,EAAjB,SACE,cAAC6F,EAAA,EAAD,CAAQ7F,UAAQ,EAACI,QAAM,MAGtB,GAAImB,EACT,OACE,cAACiL,GAAA,EAAD,UACE,cAAC+O,GAAA,EAAD,UACE,cAACA,GAAA,EAAKE,OAAN,CAAavb,MAAO,CAAEL,MAAO,QAAU2b,cAAc,SAArD,SACE,sDAOV,IAAIvb,EAAQ45C,IAAeC,EAAaJ,GAAoBh2C,GAAuBm2C,IAAe,OAGlG,OACE,qBAAK35C,MAAO,CAAEL,MAAO,MAAOmqB,OAAQ,WAAaxxB,UAAU,kBAA3D,SACE,eAAC+iB,GAAA,EAAD,WACE,cAACA,GAAA,EAAKE,OAAN,CAAavb,MAAO,CAAEL,MAAO,OAAS2b,cAAc,SAASzU,UAAU,OAAOvO,UAAU,MAAxF,SACE,6BAAK4M,EAAK7M,SAEZ,cAACgjB,GAAA,EAAKE,OAAN,CACEvb,MAAO,CAAEL,MAAO,MAAOmqB,OAAQ,WAC/BlyB,QAAS,kBAAM8hD,EAAS37C,EAASi2C,IACjC14B,cAAc,SACdhjB,UAAU,MAJZ,SAME,cAACF,EAAA,EAAD,CAAMC,KAAK,SAAS0H,MAAOA,EAAyB5D,KAAK,oBAU7D6+C,GAAc,SAAC,GAAuC,IAArCC,EAAoC,EAApCA,YAOrB,OANAC,aAAa,CACX5gC,MADW,SACLriB,GAEJgjD,EAAYhjD,EAAEkjD,WAGX,cAAC7uC,GAAA,EAAD,KAyEM8uC,GAtEYj1C,aAAS,YAA4E,EAAzE4B,cAAyE,EAA1DszC,eAA2D,IAA3C17C,EAA0C,EAA1CA,MAAO4I,EAAmC,EAAnCA,OAAQ+yC,EAA2B,EAA3BA,gBAA2B,EAC7Ez8C,IAAzBJ,EADsG,EACtGA,UAAWE,EAD2F,EAC3FA,UAD2F,EAE9EiL,qBAF8E,mBAEvGhF,EAFuG,KAE7Fq2C,EAF6F,OAGxErxC,oBAAkB,GAHsD,mBAGvGywC,EAHuG,KAG1FC,EAH0F,OAItFj1C,aAAO,gBAAgB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBAAqB,IAAhG9D,EAJsG,EAItGA,KAAMH,EAJgG,EAIhGA,MAGd2U,qBAAU,WACHqkC,GACHY,OAAYj9C,KAEb,CAACq8C,EAAaY,IAIjB,IAAMvB,EAAW,SAACtpB,EAAgB4jB,GAE3BsH,GACH38C,EAAUuI,WAAWkpB,IAInBgqB,EAAuB,GAK7B,OAJI54C,GACF44C,EAASx/C,KAAT,MAAAw/C,EAAQ,aAAS54C,IAIjB,eAACsQ,GAAA,EAAOC,SAAR,WACE,eAAC,WAAD,WACE,eAACwpC,GAAA,EAAD,CACEpkB,OAAQ,CAAC,QAAS,QAClBqkB,KAAM,EACNte,QAAS,EACTue,iBAAiB,EACjBz7C,MAAO,CAAEL,MAAOA,GAAS,OAAQ4I,OAAQA,GAAU,QALrD,UAOE,cAACmzC,GAAA,EAAD,CACEC,YAAY,0EACZ/6C,IAAI,qDACJg7C,QAAM,IAEPvB,GAAe,cAAC,GAAD,CAAaY,YAAaA,IACzCb,EAAS3/C,QACR2/C,EAASp2C,KAAI,SAACjG,EAAST,GAAV,OACX,cAACm8C,GAAD,CAAwB17C,QAASA,EAAQnF,SAAUo7C,SAAUj2C,EAAQ1F,KAAMqhD,SAAUA,GAApEp8C,MAEpBsH,GAAY,cAAC00C,GAAA,EAAD,CAAQ10C,SAAUA,OAEjC,cAAC,GAAD,CACEw1C,SAAUA,EACVV,SAAUA,EACV90C,SAAUA,EACVy1C,YAAaA,EACbC,eAAgBA,OAGpB,eAACxoC,GAAA,EAAD,CAAQ5R,QAASsB,GAAQH,EAAzB,UACGA,GACC,gCACE,cAACwE,EAAA,EAAD,CAAQpO,GAAI,KAAZ,oCACA,4BAAI4J,EAAMiI,gBAGb9H,GAAQ,cAACmE,EAAA,EAAD,CAAQzF,QAAM,aEldhB27C,GAPK,WAClB,OAEE,aADA,CACC,GAAD,KCmDWC,GAxDO,WAGpB,OAFqBj9C,IAAbL,SACCc,cAAc,kBAErB,eAACgN,GAAA,EAAD,WACE,gEACA,0HAEA,wMAGA,iNACA,sMACA,0DACA,iKAES,mBACL3D,KAAK,uCACLC,IAAI,aACJrJ,OAAO,SAHF,qCAQT,2DACA,yKAGA,kTAIA,wFAEE,+BACE,uEACA,0DACA,+DACA,qEAGJ,qIACA,wLAIA,gXAGA,yCACA,0EAC2C,mBAAGoJ,KAAK,8BAAR,kCAA8D,qBAAKrQ,UAAU,YClDjHyjD,GAAb,WAME,aAAe,yBALPC,WAAqB,EAKf,KAJNC,UAAoB,EAId,KAHNC,QAAkC,GAG5B,KAFNC,aAAuB,GAEjB,KADNC,UAAoB,GAE1BpjD,YAAmBC,MAPvB,6CAUE,SAAUojD,GACRpjD,KAAKijD,QAAQthD,KAAKyhD,KAXtB,wBAaE,SAAWH,GACTjjD,KAAKijD,QAAUA,IAdnB,wBAiBE,WACE,OAAOjjD,KAAKijD,UAlBhB,wBAqBE,WACE,OAAOjjD,KAAKgjD,WAtBhB,yBAyBE,SAAYpqC,GACV5Y,KAAKgjD,SAAWpqC,IA1BpB,wBA6BE,WACE,OAAO5Y,KAAK+iD,YA9BhB,0BAiCE,SAAanqC,GACX5Y,KAAK+iD,UAAYnqC,IAlCrB,6BAqCE,WACE5Y,KAAK+iD,WAAa/iD,KAAK+iD,YAtC3B,6BAyCE,SAAgB3Y,GACdpqC,KAAKkjD,aAAe9Y,IA1CxB,6BA6CE,WACE,OAAOpqC,KAAKkjD,eA9ChB,0BAiDE,SAAa9Y,GACXpqC,KAAKmjD,UAAY/Y,IAlDrB,0BAqDE,WACE,OAAOpqC,KAAKmjD,cAtDhB,KA0DME,GAAsB/9C,wBAAc,CAAEg+C,kBAAmB,IAAIR,KAGpDS,GADc,kBAAM19C,qBAAWw9C,KC/BxCG,GAAe,SAAC,GAAyC,IAAvCC,EAAsC,EAAtCA,aACtB,OACE,cAACtkD,EAAA,EAAD,CACE2H,MAAO28C,EAAe,QAAU,SAChCvgD,KAAK,QACL9D,KAAMqkD,EAAe,eAAiB,eAStCC,GAAsBx2C,aAAS,YAAwC,IAArCy2C,EAAoC,EAApCA,IAAoC,EACzC/9C,IAAzBJ,EADkE,EAClEA,UAAWE,EADuD,EACvDA,UACX49C,EAAsBC,KAAtBD,kBAFkE,EAGlDl3C,aAAO,+BAAiC1G,EAAUyB,aAAe,IAAMw8C,GAAK,SAACh8C,GAAD,OAClGkB,EAAYlB,EAAKnC,EAAU6G,uBADrB9D,EAHkE,EAGlEA,KAMR,GAT0E,EAG5DH,OAIZk7C,EAAkBM,aAAa,KAE5Br7C,EACH,OAAO,cAACqJ,GAAA,EAAD,CAAQqC,SAAO,EAAf,wBAGT,GAAIqvC,EAAkBO,iBAAmBF,EACvC,OAAO,6BAET,IAAMG,EAAqCv7C,EAC3C,OACE,eAAC8K,GAAA,EAAD,WACE,cAAC,GAAD,CAAkBywC,aAAcA,IAChC,cAAC,GAAD,CAAkBH,IAAKA,UASvBI,GAAmB,SAAC,GAAoC,IAAlCJ,EAAiC,EAAjCA,IACpBz3C,EAAQrG,qBAAWsG,IADkC,EAEjCwE,qBAFiC,mBAEpDqzC,EAFoD,KAE7CC,EAF6C,OAGnCtzC,qBAHmC,mBAGpDwjB,EAHoD,KAG9C+vB,EAH8C,OAI1Bt+C,IAAzBF,EAJmD,EAInDA,UAAWF,EAJwC,EAIxCA,UAJwC,EAKRmL,qBALQ,mBAKpDwzC,EALoD,KAK/BC,EAL+B,OAMnCh4C,aAAO,wBAAwB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAAnF9D,EANmD,EAMnDA,KAAMH,EAN6C,EAM7CA,MACRi8C,EAA2C,GAC3CC,EAAwC,GAC9C,IAAKnwB,EACH,OAAO,cAACviB,GAAA,EAAD,CAAQjT,QAAS,kBAAMulD,GAAQ,IAA/B,oBAEL37C,IACF87C,EAAe1iD,KAAf,MAAA0iD,EAAc,aAAS97C,IACvB87C,EAAe5iD,SAAQ,SAACstC,GACtBuV,EAAiB3iD,KAAK,CAAE4B,IAAKwrC,EAAGpvC,SAAUyD,MAAO2rC,EAAGpvC,SAAU4N,KAAMwhC,EAAGwV,cAAcnlD,WAGrFgJ,IACF8D,EAAM9D,MAAM,gDACZ87C,GAAQ,IAEV,IAAMM,EAAW,uCAAG,4BAAA/8C,EAAA,yDACb08C,EADa,uBAEhBj4C,EAAM9D,MAAM,qCAFI,iCAKlB67C,GAAS,GALS,SAMCp7C,EACjB,+BAAiCnD,EAAUyB,aAAe,IAAMw8C,EAAM,IAAMQ,EAAoBxkD,SAChG6F,EAAU6G,mBACV,CAAEpD,KAAK,EAAMP,OAAQ,QATL,OAMZ+7C,EANY,OAWlBR,GAAS,GACLQ,EAAKv8C,IACPgE,EAAMgL,QAAQ,yBACdC,aAAO,+BAAiCzR,EAAUyB,aAAe,IAAMw8C,IAEvEz3C,EAAM9D,MAAM,iCAhBI,2CAAH,qDAoBjB,OACE,cAAC,KAAD,CAAWuF,OAAK,EAAC5G,MAAO,CAAEL,MAAO,OAASkH,UAAU,OAApD,SACE,eAACwU,GAAA,EAAD,WACE,cAACA,GAAA,EAAKjK,IAAN,UACE,cAACiK,GAAA,EAAKE,OAAN,UACE,cAAC1V,EAAA,EAAD,CAAQpO,GAAI,KAAZ,iCAGJ,cAAC4jB,GAAA,EAAKjK,IAAN,UACE,cAACiK,GAAA,EAAKE,OAAN,UACE,cAACvQ,GAAA,EAAD,UACE,eAACA,GAAA,EAAK0Q,MAAN,CAAYlB,OAAQ8iC,EAAe7iD,OAAS,EAA5C,UACE,yDACC6iD,EAAet5C,KAAI,SAAC6Z,GAAD,OAClB,cAAC7S,GAAA,EAAKq2B,MAAN,CAEEjmC,SAA4B,OAAnBgiD,QAAmB,IAAnBA,OAAA,EAAAA,EAAqBxkD,YAAailB,EAAEjlB,SAC7CyD,MAAOwhB,EAAEjlB,SACToO,SAAU,SAAC/O,EAAGuJ,GACZ,GAAIA,EAAKnF,MAAO,CACd,IAAI+gD,EAAsBE,EAAer2C,MAAK,SAAC5K,GAAD,OAAWA,EAAMzD,WAAa4I,EAAKnF,SAC7E+gD,GACFC,EAAoBD,KAI1BhyC,MAAOyS,EAAE2/B,cAAcnlD,MAXlBwlB,EAAEjlB,sBAkBnB,cAACyiB,GAAA,EAAKjK,IAAN,CAAU4vB,WAAS,EAAnB,SACE,cAAC3lB,GAAA,EAAKE,OAAN,UACE,cAAC,GAAD,CAAkBwhC,aAAY,OAAEK,QAAF,IAAEA,OAAF,EAAEA,EAAqBI,oBAGzD,cAACniC,GAAA,EAAKjK,IAAN,UACE,cAACiK,GAAA,EAAKE,OAAN,UACE,eAAC1Q,GAAA,EAAO6Q,MAAR,WACE,cAAC7Q,GAAA,EAAD,CAAQqC,QAAS+vC,EAAOpwC,UAAQ,EAACjV,QAAS6lD,EAA1C,mBAGA,cAAC5yC,GAAA,EAAD,CAAQ+H,UAAQ,EAAChb,QAAS,kBAAMulD,GAAQ,IAAxC,iCAeRQ,GAAkBx3C,aAAS,YAAoC,IAAjCy2C,EAAgC,EAAhCA,IAC5Bz3C,EAAQrG,qBAAWsG,IADyC,EAEjCvG,IAAzBF,EAF0D,EAE1DA,UAAWF,EAF+C,EAE/CA,UACX89C,EAAsBC,KAAtBD,kBAH0D,EAIxB3yC,oBAAkB,GAJM,mBAI3Dg0C,EAJ2D,KAI5CC,EAJ4C,KAK5DC,EAAS,uCAAG,4BAAAp9C,EAAA,6DAChBm9C,GAAiB,GADD,SAEO/7C,EACrB,6BAA+BnD,EAAUyB,aAAe,IAAMw8C,EAC9Dn+C,EAAU6G,mBACV,CAAEpD,KAAK,EAAMP,OAAQ,QALP,OAEVd,EAFU,OAOhBg9C,GAAiB,GACbh9C,EAASM,IACXo7C,EAAkBwB,gBAAgBnB,GAClCz3C,EAAMgL,QAAQ,eAEdosC,EAAkBwB,gBAAgB,IAClC54C,EAAM9D,MAAM,gCAEdnJ,QAAQC,IAAI0I,GAfI,2CAAH,qDAkBf,OACE,cAACgK,GAAA,EAAD,CAAQgC,UAAQ,EAACK,QAAS0wC,EAAehmD,QAASkmD,EAAlD,wBAMEE,GAAgB73C,aAAS,YAAqC,IAAlCk2C,EAAiC,EAAjCA,OAChC,IAAKA,EACH,OACE,cAAC/vC,GAAA,EAAD,CAAS2xC,QAAM,EAACp+C,UAAQ,EAACq+C,QAAM,EAACl+C,MAAO,CAAEsW,UAAW,QAASC,SAAU,QAAS5W,MAAO,QAAvF,SACE,cAACgG,EAAA,EAAD,CAAQzF,QAAM,MAJ6C,IAQzDq8C,EAAsBC,KAAtBD,kBACJ4B,EAAiC9B,EAAO+B,WAAa,SAAW,QAC9Dl+C,EAASq8C,EAAkB8B,oBAAsBhC,EAAOO,IAExDvkD,EAAgC,IAAzBgkD,EAAOiC,cAAsBjC,EAAOO,IAAMlqC,KAAEC,WAAW0pC,EAAO3gD,aAAe,IAAM2gD,EAAOiC,cACvG,OACE,eAACh/B,GAAA,EAAD,CACE7nB,GAAI6U,KACJ2xC,QAAM,EACNp+C,UAAQ,EACRq+C,QAAM,EACNn+C,MAAOo+C,EACPn+C,MAAO,CAAEsW,UAAW,OAAQC,SAAU,QAAS5W,MAAO,QANxD,UAQE,cAAC2f,GAAA,EAAUE,MAAX,CAAiBtf,OAAQA,EAAzB,SACE,eAACmb,GAAA,EAAD,CAAMrb,MAAO,CAAE0W,OAAQ,SAAU/W,MAAO,QAAxC,UACE,eAAC0b,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,CAAa1U,UAAU,OAAOm6B,WAAS,EAAvC,SACE,cAACn7B,EAAA,EAAD,UAASxN,MAEX,cAACgjB,GAAA,EAAKE,OAAN,CAAaylB,WAAS,EAACn6B,UAAU,QAAjC,SACE,cAAChB,EAAA,EAAD,CAAQ9F,MAAOo+C,EAAf,SAAgC9B,EAAO+B,WAAa,UAAY,qBAGpE,eAAC/iC,GAAA,EAAKjK,IAAN,CAAU4hB,QAAS,EAAnB,UACE,cAAC3X,GAAA,EAAKE,OAAN,UACE,cAAC1V,EAAA,EAAD,CAAQpO,GAAI,KAAZ,8BAEF,cAAC4jB,GAAA,EAAKE,OAAN,CAAa1U,UAAU,QAAvB,SACE,cAAC,GAAD,CAAc61C,aAAcL,EAAOkC,wBAGvC,cAACljC,GAAA,EAAKjK,IAAN,UACE,cAACiK,GAAA,EAAKE,OAAN,UACE,eAAC1Q,GAAA,EAAO6Q,MAAR,CAAc9U,OAAK,EAAnB,UACE,cAAC+2C,GAAD,CAAiBf,IAAKP,EAAOO,MAC7B,cAAC/xC,GAAA,EAAD,CACE+H,UAAQ,EACRhb,QAAS,WACP2kD,EAAkBwB,gBAAgB,IAClCxB,EAAkBM,aAAa,KAJnC,+BAcV,cAACv9B,GAAA,EAAUxZ,QAAX,CAAmB5F,OAAQA,EAA3B,SACE,cAACs+C,GAAD,CAAqB5B,IAAKP,EAAOO,cAUnC4B,GAAsBr4C,aAAS,YAAwC,IAArCy2C,EAAoC,EAApCA,IAC9BL,EAAsBC,KAAtBD,kBACR,OAAIA,EAAkBO,iBAAmBF,EAChC,cAACD,GAAD,CAAqBC,IAAKA,IAE5B,cAAC/xC,GAAA,EAAD,CAAQjT,QAAS,kBAAM2kD,EAAkBM,aAAaD,IAAtD,2BAGH6B,GAAc,SAACC,GACnB,OAAKA,EACEA,EAAK,IADIA,GAOZC,GAAmB,SAAC,GAA6C,IAA3C5B,EAA0C,EAA1CA,aAC1B,OACE,qCACE,cAACl3C,EAAA,EAAD,iBAASk3C,QAAT,IAASA,OAAT,EAASA,EAAc1kD,OACvB,cAAC8Q,GAAA,EAAD,iBAAU4zC,QAAV,IAAUA,OAAV,EAAUA,EAActzC,OACxB,eAAC0H,GAAA,EAAD,WACE,eAACA,GAAA,EAAMtL,OAAP,WACE,cAACsL,GAAA,EAAMc,WAAP,mBACA,cAACd,GAAA,EAAMc,WAAP,0BAEF,eAACd,GAAA,EAAMe,KAAP,WACE,eAACf,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,iCACA,cAACF,GAAA,EAAME,KAAP,UAAaotC,GAAW,OAAC1B,QAAD,IAACA,OAAD,EAACA,EAAc6B,cAAcC,yBAEvD,eAAC1tC,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,6BACA,cAACF,GAAA,EAAME,KAAP,UAAaotC,GAAW,OAAC1B,QAAD,IAACA,OAAD,EAACA,EAAc6B,cAAcE,qBAEvD,eAAC3tC,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,8BACA,cAACF,GAAA,EAAME,KAAP,UAAaotC,GAAW,OAAC1B,QAAD,IAACA,OAAD,EAACA,EAAc6B,cAAcG,gCAgB3DC,GAAU74C,aAAS,YAA+B,IAA5BiqB,EAA2B,EAA3BA,OAClB3xB,EAAcI,IAAdJ,UACA89C,EAAsBC,KAAtBD,kBACA/6C,EAAS6D,aACfk3C,EAAkB0C,aAAe,6BAA+B7uB,EAAS,MACzE,SAACxvB,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBACpC,CAAEuQ,gBAAiB,MAHbrU,KAoBR,OAfIA,IACF+6C,EAAkB2C,YAAY19C,EAAK29C,aACnC5C,EAAkB6C,WAAW59C,EAAKmJ,QAClCnJ,EAAKmJ,OAAOiH,MAAK,SAAClR,EAAyBmR,GACzC,OAAInR,EAAEhF,cAAgBmW,EAAEnW,YAClBgF,EAAE49C,gBAAkBzsC,EAAEysC,cACjB59C,EAAEk8C,IAAM/qC,EAAE+qC,IAAM,GAAK,EAErBl8C,EAAE49C,cAAgBzsC,EAAEysC,cAAgB,GAAK,EAG3C59C,EAAEhF,YAAcmW,EAAEnW,YAAc,GAAK,MAKhD,cAACmP,GAAA,EAAD,CACEjT,QAAS,WACP2kD,EAAkB8C,mBAGpBxyC,UAAW0vC,EAAkB0C,aAC7BrsC,SAAU2pC,EAAkB0C,aAC5B/xC,QAASqvC,EAAkB0C,aAP7B,SASG1C,EAAkB0C,aAAe,OAAS,kBAK3CK,GAAUn5C,aAAS,WAAO,IACtBo2C,EAAsBC,KAAtBD,kBACFL,EAAUK,EAAkBgD,aAYlC,OAXArD,EAAQroC,QAAQjC,MAAK,SAAClR,EAAyBmR,GAC7C,OAAInR,EAAEhF,cAAgBmW,EAAEnW,YAClBgF,EAAE49C,gBAAkBzsC,EAAEysC,cACjB59C,EAAEk8C,IAAM/qC,EAAE+qC,IAAM,GAAK,EAErBl8C,EAAE49C,cAAgBzsC,EAAEysC,cAAgB,GAAK,EAG3C59C,EAAEhF,YAAcmW,EAAEnW,YAAc,GAAK,KAI9C,cAAC4Q,GAAA,EAAD,UACE,eAACmtB,GAAA,EAAW/d,MAAZ,CAAkBhc,UAAU,QAAQiF,SAAU,IAAKlN,GAAI4jB,KAAMikB,WAAS,EAACtM,QAAS,EAAhF,UACGkpB,EAAQl4C,KAAI,SAACq4C,GAAD,OACX,cAAChhC,GAAA,EAAKE,OAAN,UACE,cAACyiC,GAAD,CAAe3B,OAAQA,SAG1BE,EAAkB0C,cACjB,cAAC5jC,GAAA,EAAKE,OAAN,UACE,cAACyiC,GAAD,cAQgB73C,aAAS,YAA0C,IAAD,EAAtCwpB,EAAsC,EAAtCA,MAAsC,EAC5C9wB,IAAxBF,EADoE,EACpEA,UADoE,EACzDH,SACVc,cAAc,wBACvB,IAAM8wB,GAAsB,OAALT,QAAK,IAALA,GAAA,UAAAA,EAAOplB,cAAP,eAAe6lB,QAAST,EAAMplB,OAAO6lB,OAASzxB,EAAUyB,aAE/E,OACE,eAACkM,GAAA,EAAD,CAAStM,MAAO,CAAE8G,UAAW,OAAQwP,UAAW,SAAhD,UACE,cAACzQ,EAAA,EAAD,mCACA,cAAC8pC,GAAA,EAAD,UACE,cAACqP,GAAD,CAAS5uB,OAAQA,MAEnB,cAACkvB,GAAD,U,SChZSE,G,mFAAf,WAAsBC,EAAoBtmD,GAA1C,iBAAAuH,EAAA,6DACQc,EAAO,CACXi+C,WAAYA,GAFhB,SAQwCtmD,IARxC,+BAQqB,UARrB,WAOM,eAAgB,mBAChB6H,cARN,WAUUjG,KAAKE,UAAUuG,GANjBQ,EAJR,CAKIL,OAAQ,OACRZ,QANJ,KAUIa,KAVJ,wBAYSd,YAAM,mBAAoBkB,IAZnC,4C,sBAeA,SAAS09C,GAAUjvB,GACjB,IAAMjvB,EAAO,CACXivB,KAAMld,OAAOkd,IAETzuB,EAAU,CACdL,OAAQ,OACRZ,QAAS,CACP,eAAgB,oBAElBa,KAAM7G,KAAKE,UAAUuG,IAEvB,OAAOV,YAAM,sBAAuBkB,GAGtC,IAAM29C,GAAa,WACjBvvC,aAAO,iBAUHwvC,GAAmBz5C,aAAS,WAAO,IAC/B1H,EAAcI,IAAdJ,UAD8B,EAEd4G,aAAO,gBAAgB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAA3E9D,EAF8B,EAE9BA,KAAMH,EAFwB,EAExBA,MACd,GAAIA,EAEF,OADAnJ,QAAQC,IAAI,oBAAqBkJ,GAE/B,cAAC8H,GAAA,EAAD,CACEC,KAAK,cACLs9B,OAAO,+BACPjgC,QAAS,8BAAgCpF,EAAMiI,WAAa,MAIlE,IAAK9H,EACH,OAAO,cAACpJ,EAAA,EAAD,CAAMC,KAAK,UAAU6U,SAAO,IAErC,IAAM2yC,EAAsBr+C,EAEtBgb,EAAO,IAAI1iB,KAAK+lD,EAASpvB,MAAMnnB,YAAc,IACnD,OACE,qCACE,cAACzD,EAAA,EAAD,CAAQpO,GAAG,KAAX,gCACA,cAAC0Z,GAAA,EAAD,CAAOga,MAAM,OAAO8a,YAAU,EAA9B,SACE,eAAC90B,GAAA,EAAMe,KAAP,WACE,eAACf,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,0BACA,cAACF,GAAA,EAAME,KAAP,CAAYxK,UAAU,QAAtB,SACE,iCAASg5C,EAASC,YAAc,wBAA0B,gBAI9D,eAAC3uC,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,yCACA,cAACF,GAAA,EAAME,KAAP,CAAYxK,UAAU,QAAtB,SACE,iCAASg5C,EAASE,iBAAmB,MAAQ,YAIjD,eAAC5uC,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,yBACA,cAACF,GAAA,EAAME,KAAP,CAAYxK,UAAU,QAAtB,SACE,iCAASg5C,EAASJ,kBAItB,eAACtuC,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,0BACA,cAACF,GAAA,EAAME,KAAP,CAAYxK,UAAU,QAAtB,SACE,iCAAS2V,cAKjB,eAAC3R,GAAA,EAAD,CAAQjT,QAAS+nD,GAAjB,UACE,cAACvnD,EAAA,EAAD,CAAMC,KAAK,YADb,UAEU,aAUV2nD,GAAS75C,aAAS,YAAkC,IAA/Bs5C,EAA8B,EAA9BA,WACjBhhD,EAAcI,IAAdJ,UAD+C,EAEfmL,oBAAS,GAFM,mBAEhDq2C,EAFgD,KAElCC,EAFkC,OAGTt2C,oBAAS,GAHA,mBAGhDu2C,EAHgD,KAG/BC,EAH+B,OAIjBx2C,mBAAS,IAJQ,mBAIhDy2C,EAJgD,KAInCC,EAJmC,OAKrB12C,mBAAS61C,GALY,mBAKhDc,EALgD,KAKrCC,EALqC,KAOjD7b,EAAQ,uCAAG,8BAAAjkC,EAAA,6DACfw/C,GAAgB,GAChBE,GAAmB,GACnBE,EAAe,IAHA,SAIMd,GAAOe,EAAW9hD,EAAU6G,oBAJlC,WAITqF,EAJS,QAKHxJ,GALG,iCAMMwJ,EAAOvJ,OANb,OAMPQ,EANO,OAOb1J,QAAQC,IAAI,eAAgByJ,GAC5B0+C,EAAe1+C,EAAKP,OACpB++C,GAAmB,GATN,wBAWbloD,QAAQC,IAAI,kBACZioD,GAAmB,GACnBE,EAAe,IACf11C,YAAW,WACTw1C,GAAmB,KAClB,KAhBU,QAkBfF,GAAgB,GAChBP,KAnBe,4CAAH,qDAyBd,OACE,qCACE,cAAC30C,GAAA,EAAK0Q,MAAN,UACE,cAAC1Q,GAAA,EAAKyE,MAAN,CACEpT,MAAOkkD,EACPloD,KAAK,YACL2O,SAVkB,SAAC/O,GACzBuoD,EAAavoD,EAAEsH,OAAOlD,QAUhB+O,MAAM,qCAIV,sBAAK9S,UAAU,UAAf,UACE,eAACuS,GAAA,EAAD,CACEzB,MAAI,EACJyD,SAA0B,KAAhBwzC,EACVztC,SAA0B,KAAhBytC,EACVh1C,SAAU40C,EACVroD,QAAS+sC,EALX,kBAQGsb,GAAgB,cAAC7nD,EAAA,EAAD,CAAMC,KAAK,iBAAiB6U,SAAO,IACnDizC,GAAmB,cAAC/nD,EAAA,EAAD,CAAMC,KAAK,iBAEhCgoD,GAAe,4BAAIA,aAM5B,SAASI,KAAa,IAAD,EACqB72C,oBAAS,GAD9B,mBACZq2C,EADY,KACEC,EADF,OAE2Bt2C,oBAAS,GAFpC,mBAEZu2C,EAFY,KAEKC,EAFL,OAGmBx2C,mBAAS,IAH5B,mBAGZy2C,EAHY,KAGCC,EAHD,OAImB12C,mBAAS,IAAI9P,MAJhC,mBAIZ4mD,EAJY,KAICC,EAJD,KAMnB3qC,qBAAU,WACR,IAAI4qC,EAAW3uB,aAAY,WACzB0uB,EAAe,IAAI7mD,QAClB,KAEH,OAAO,kBAAMg5B,cAAc8tB,MAC1B,IAEH,IAAMjc,EAAQ,uCAAG,gCAAAjkC,EAAA,6DACfw/C,GAAgB,GAChBE,GAAmB,GACnBE,EAAe,IACTrlC,GAAM,IAAInhB,MAAO+mD,cAJR,SAKMnB,GAAUzkC,GALhB,WAKTtQ,EALS,QAMHxJ,GANG,kCAOMwJ,EAAOnE,OAPb,QAOP5E,EAPO,OAQb1J,QAAQC,IAAI,eAAgByJ,GAC5B0+C,EAAe1+C,GACfw+C,GAAmB,GAVN,wBAYbloD,QAAQC,IAAI,kBACZioD,GAAmB,GACnBE,EAAe,IACf11C,YAAW,WACTw1C,GAAmB,KAClB,KAjBU,QAmBfF,GAAgB,GAChBP,KApBe,4CAAH,qDAuBd,OACE,qCACE,cAACxuC,GAAA,EAAD,CAAOga,MAAM,OAAO8a,YAAU,EAA9B,SACE,cAAC90B,GAAA,EAAMe,KAAP,UACE,eAACf,GAAA,EAAMC,IAAP,WACE,cAACD,GAAA,EAAME,KAAP,4BACA,cAACF,GAAA,EAAME,KAAP,CAAYxK,UAAU,QAAtB,SACE,iCAAS65C,EAAYp3C,sBAM7B,sBAAKhR,UAAU,UAAf,UACE,eAACuS,GAAA,EAAD,CACEzB,MAAI,EACJyD,SAA0B,KAAhBwzC,EACVztC,SAA0B,KAAhBytC,EACVh1C,SAAU40C,EACVroD,QAAS+sC,EALX,sCAQGsb,GAAgB,cAAC7nD,EAAA,EAAD,CAAMC,KAAK,iBAAiB6U,SAAO,IACnDizC,GAAmB,cAAC/nD,EAAA,EAAD,CAAMC,KAAK,iBAEhCgoD,GAAe,4BAAIA,UAW5B,IAAMS,GAAY36C,aAAS,YAAkD,IAA/Cs5C,EAA8C,EAA9CA,WAAYK,EAAkC,EAAlCA,YAAkC,EACtCl2C,mBAASk2C,GAD6B,mBACnEiB,EADmE,KACvDC,EADuD,KAM1E,OACE,eAAC10C,GAAA,EAAD,CAAStM,MAAO,CAAEkO,WAAY,OAA9B,UACE,eAAC,IAAD,CAAMvW,GAAG,SAAT,UACE,cAACS,EAAA,EAAD,CAAMC,KAAK,eADb,qBAKA,cAACiU,GAAA,EAAD,CAAShE,UAAQ,EAAjB,SACE,eAAC0C,GAAA,EAAD,CAAM25B,SAXS,SAAC1sC,GACpBA,EAAEugD,kBAUE,UACE,sBAAKlgD,UAAU,UAAf,UACE,cAACuS,GAAA,EAAD,CACE3K,OAAQ6gD,EACRnpD,QAAS,WACPopD,GAAc,IAHlB,yCAQA,cAACn2C,GAAA,EAAD,CACE3K,QAAS6gD,EACTnpD,QAAS,WACPopD,GAAc,IAHlB,4BASF,qBAAK1oD,UAAU,UAAf,SAA0ByoD,EAAa,cAACf,GAAD,CAAQP,WAAYA,IAAiB,cAACgB,GAAD,WAIhF,cAACn0C,GAAA,EAAD,CAAShE,UAAQ,EAAjB,SACE,cAACs3C,GAAD,YAwBOqB,GAlBE96C,aAAS,WAAO,IAAD,EACEtH,IAAxBL,EADsB,EACtBA,SAAUC,EADY,EACZA,UAClBD,EAASc,cAAc,gBAFO,MAGN+F,aAAO,gBAAgB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAA3E9D,EAHsB,EAGtBA,KAAMH,EAHgB,EAGhBA,MACd,GAAIA,EAEF,OADAnJ,QAAQC,IAAI,oBAAqBkJ,GAE/B,cAAC8H,GAAA,EAAD,CAASC,KAAK,cAAcs9B,OAAO,+BAA+BjgC,QAAS,oCAG/E,IAAKjF,EACH,OAAO,cAACpJ,EAAA,EAAD,CAAMC,KAAK,UAAU6U,SAAO,IAGrC,IAAMg0C,EAAmB1/C,EACzB,OAAO,cAACs/C,GAAD,gBAAeI,O,mBCjTlBC,GAASh7C,aAAS,WAAO,IAAD,IACctH,IAAlCL,EADoB,EACpBA,SAAUE,EADU,EACVA,oBACZjG,EAAO+F,EAAS4iD,UAChBC,EAAS,UAAG5oD,EAAKC,aAAR,aAAG,EAAY4oD,WAC9B,OACE,qBAAKhpD,UAAU,SAAf,SACE,sBAAKA,UAAU,uDAAf,UACE,qBAAIA,UAAU,UAAd,qBAAiC+oD,EAAjC,OACA,sBAAK/oD,UAAU,sCAAf,UACE,0HACA,cAACuS,GAAA,EAAD,CACE9K,MAAM,QACN5D,KAAK,OACL7D,UAAU,iBACVsO,OAAK,EACLH,QAAQ,QACR2C,KAAK,gBACL+E,cAAc,QACdvW,QAAS,WACP8G,EAAoB6iD,iBAAgB,IATxC,SAYE,sBAAMjpD,UAAU,YAAhB,yBAGsC,IAAzCG,EAAKE,MAAMI,2BACV,oBAAGT,UAAU,sDAAb,6CAEE,cAACF,EAAA,EAAD,CAAMC,KAAK,QAAQC,UAAU,oBC5BnCkpD,GAAiBr7C,aAAS,WAAO,IAC7BzH,EAAwBG,IAAxBH,oBACF1B,EAAc0B,EAAoBnB,iBAElCkkD,EADW/iD,EAAoBgjD,WACR19C,KAAI,SAACykB,EAAW7qB,GAC3C,OACE,cAACxF,EAAA,EAAD,CACE2H,OAA0B,IAAnB0oB,EAAKrrB,UAAqB,QAAU,OAC3C/E,KAAK,SAELC,UAAS,UAAKsF,IAAcZ,EAAc,eAAiB,KAJ7D,eAGeY,OAKnB,OAAO,qBAAKtF,UAAU,4BAAf,SAA4CmpD,OCV/CE,GAAc,SAAC,GAAoC,IACjDl7C,EADgD,EAAjCm7C,SAAiC,EAAvB5kD,aAE/B,OACE,sBAAK1E,UAAU,WAAf,UACE,6BAAKmO,EAAQiO,UACb,8BAAMjO,EAAQD,OACd,cAACC,EAAQuC,UAAT,QC0FS64C,GAnGG,WAAO,IACfnjD,EAAwBG,IAAxBH,oBAMR,OALAsX,qBAAU,WACR,IAAMhZ,EAAc0B,EAAoBnB,iBACxCmB,EAAoBhB,gBAAgBV,MAIpC,gCACE,qBAAK8L,IAAI,qCAAqCoN,IAAI,qBAAqB5d,UAAU,kBACjF,mBAAGA,UAAU,OAAb,kFACA,eAAC+iB,GAAA,EAAD,CAAM/iB,UAAU,OAAhB,UACE,eAAC+iB,GAAA,EAAKjK,IAAN,WACE,eAACiK,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,GACRnjB,UAAU,4BAHZ,UAKE,qBAAKwQ,IAAI,gCACPnJ,MAAO,IACPuW,IAAI,iBACJ5d,UAAU,SARd,iCAYA,eAAC+iB,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,GACRnjB,UAAU,4BAHZ,UAKE,qBAAKwQ,IAAI,6BACPnJ,MAAO,IACPuW,IAAI,iBACJ5d,UAAU,SARd,4CAaF,eAAC+iB,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,GACRnjB,UAAU,4BAHZ,UAME,qBAAKwQ,IAAI,sBACPnJ,MAAO,IACPuW,IAAI,iBACJ5d,UAAU,SATd,gCAaA,eAAC+iB,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,GACRnjB,UAAU,4BAHZ,UAME,qBAAKwQ,IAAI,gCACPnJ,MAAO,IACPuW,IAAI,iBACJ5d,UAAU,SATd,2CAaA,eAAC+iB,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,GACRnjB,UAAU,4BAHZ,UAKE,qBAAKwQ,IAAI,6BACPnJ,MAAO,IACPuW,IAAI,iBACJ5d,UAAU,SARd,wBAYA,eAAC+iB,GAAA,EAAKE,OAAN,CACEC,SAAU,EACVC,OAAQ,GACRnjB,UAAU,4BAHZ,UAKE,qBAAKwQ,IAAI,uBACPnJ,MAAO,IACPuW,IAAI,iBACJ5d,UAAU,SARd,4CAaF,cAAC6Q,GAAA,EAAD,CACEpJ,MAAM,OACNzH,UAAU,OAFZ,gGCtFAwpD,GAAqB,SAAC,GAAuD,IAArDC,EAAoD,EAApDA,SAAUpjD,EAA0C,EAA1CA,UAAWD,EAA+B,EAA/BA,oBAC3CP,EAAQQ,EAAU4H,WAiBlBytC,EAAW,SAACgO,GAChB,IAAMC,EAAU9jD,EAAMgb,QAAO,SAAClhB,GAAD,OAAYA,EAAEuN,WAAW0Y,gBAAkB8jC,EAAY9jC,iBAEpF,OAA0B,IAAnB+jC,EAAQxnD,OAAewnD,EAAQ,GAAG5pD,KAAlC,mCAAqE4pD,EAAQxnD,OAA7E,MAEHynD,EAAeH,EAAS/9C,KAAI,SAACg+C,EAAqB1kD,GACtD,IAAMJ,EAAkBwB,EAAoBm8C,qBAC5C,OACE,cAACx/B,GAAA,EAAKE,OAAN,CAEEjjB,UAAU,2BACVV,QAAS,kBA3BO,SAACoqD,GAErBtjD,EAAoByjD,mBAAmBH,GACvC,IAAMI,EAAyBjkD,EAAMgb,QAAO,SAAClhB,GAAD,OAAYA,EAAEuN,WAAW0Y,gBAAkB8jC,EAAY9jC,iBAG7D,IAAlCkkC,EAAuB3nD,QACzBkE,EAAUuI,WAAWk7C,EAAuB,GAAGxpD,UAoB9BypD,CAAcL,IAH/B,SAKE,sBACE1pD,WACG4E,IAAoB8kD,EAAc,qCAAuC,iBAC1E,eAHJ,UAME,sBAAK1pD,UAAU,kBAAf,UACG4E,IAAoB8kD,GAAe,cAAC5pD,EAAA,EAAD,CAAMC,KAAK,gBAAgB8D,KAAK,UACnE6lD,KAEH,qBAAK1pD,UAAU,eAAf,SACG07C,EAASgO,SAhBhB,qBACqB1kD,OAqBzB,OACE,cAAC+d,GAAA,EAAD,CAAM2X,QAAS,EAAGsvB,SAAO,EAAzB,SACGJ,KA4HQK,GAvHOp8C,aAAS,WAAO,IAAD,YAC6BtH,IAAxDL,EAD2B,EAC3BA,SAAUE,EADiB,EACjBA,oBAAqBC,EADJ,EACIA,UAAWF,EADf,EACeA,UAC5CzB,EAAc0B,EAAoBnB,iBACpCL,EAAkBwB,EAAoBm8C,qBACtC2H,EAAgB,KAChBC,GAAqB,EACrBC,GAAkB,EANa,EAS4Br9C,aAC7DnI,EAAe,yBAAqBA,GAAoB,MACxD,SAAC0D,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBACpC,CACEuQ,gBAAiB,MAbc,IAS7BrU,KAAMmhD,OATuB,MAST,KATS,MASHthD,MAAOuhD,OATJ,MASmB,KATnB,EAgB7BC,EAAgBrkD,EAAS4iD,UAKzB0B,EAAW,WACf,OAAOH,IAAsC,IAAvBF,IAAmD,IAApBC,GAGnDK,EAAe,GA0BnB,MAzBI,uCAAwCF,EAASnqD,QACnDqqD,EAAeF,EAASnqD,MAAM,uCAG5BkqD,GACF1qD,QAAQmJ,MAAM,6CAA+CuhD,IAG1DA,GAAgBD,IAEnBH,EAAgBG,EAAY38C,eAC5By8C,EAAqBD,EAAcQ,UAAU7gD,OAC7CugD,EAAkBF,EAAcv8C,MAAM9D,QAGpC2gD,IAEFpkD,EAAoBhB,gBAAgBV,GAGpC0B,EAAoBukD,kBAAkBjmD,GAMtC,gCACE,qBACE8L,IAAI,gDACJoN,IAAI,2BACJ5d,UAAU,uBAEZ,uHACA,+HACA,cAAC,GAAD,CACEypD,SAAUgB,EACVpkD,UAAWA,EACXD,oBAAqBA,MAEpBqkD,IAAiBA,EAAatoD,SAC/B,oBAAGnC,UAAU,eAAb,sDAAqE,mBAAGqQ,KAAK,iCAAR,qCAArE,gBAEDzL,GAEC,qBAAK5E,UAAU,OAAf,SACE,eAAC6Q,GAAA,EAAD,CAASpJ,MAAO+iD,IAAa,OAAS,MAAtC,UACE,eAAC35C,GAAA,EAAQtD,OAAT,uBACwB,QAAb,EAAA28C,SAAA,eAAeh9C,aAAf,UAAgCtI,EAAhC,qBAEX,eAACme,GAAA,EAAD,CAAM2X,QAAS,EAAG16B,UAAU,OAA5B,UACE,cAAC+iB,GAAA,EAAKE,OAAN,CAAaE,OAAQ,GAAID,SAAU,EAAnC,SACE,sBAAK1Q,MAAO03C,EAAa,UAAGA,SAAH,iBAAG,EAAeQ,iBAAlB,aAAG,EAA0BruC,QAAU,MAAhE,UACE,cAACvc,EAAA,EAAD,CACEC,KAAK,OACLC,UAAU,OACVyH,MAAM,UAER,yDACA,cAAC3H,EAAA,EAAD,CACEC,MAA6B,IAAvBoqD,EAA8B,QAAU,SAC9C1iD,OAA8B,IAAvB0iD,EAA8B,QAAU,MAC/CnqD,UAAU,cAIhB,cAAC+iB,GAAA,EAAKE,OAAN,CAAaE,OAAQ,GAAID,SAAU,EAAnC,SACE,sBAAK1Q,MAAO03C,EAAa,UAAGA,SAAH,iBAAG,EAAev8C,aAAlB,aAAG,EAAsB0O,QAAU,MAA5D,UACE,cAACvc,EAAA,EAAD,CACEC,KAAK,QACL0H,MAAM,QACNzH,UAAU,SAEZ,wDACA,cAACF,EAAA,EAAD,CACEC,MAA0B,IAApBqqD,EAA2B,QAAU,SAC3C3iD,OAA2B,IAApB2iD,EAA2B,QAAU,MAC5CpqD,UAAU,cAIhB,cAAC+iB,GAAA,EAAKE,OAAN,CAAa5b,MAAO,GAApB,UACuB,IAApB+iD,IAAmD,IAAvBD,EAA5B,uBACmBvlD,EADnB,0EAEkBA,EAFlB,2ECtGFgmD,GA7DG/8C,aAAS,WAAO,IAAD,EACuBtH,IAA9CJ,EADuB,EACvBA,UAAWC,EADY,EACZA,oBAAqBC,EADT,EACSA,UACpCzB,EAAkBwB,EAAoBm8C,qBACpC79C,EAAc0B,EAAoBnB,iBACpCY,EAAa,GAJc,EAKPkH,aAAO,gBAAgB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBAAqB,CACtG69C,mBAAmB,EACnBC,uBAAuB,IAFjB5hD,EALuB,EAKvBA,KAAMH,EALiB,EAKjBA,MAIdlD,EAAQqD,EAQR,IASO,EAFP,GAAIH,EACFnJ,QAAQmJ,MAAM,8BAGd,GAAIlD,IAAc,QAAL,EAAAA,SAAA,eAAO1D,QAAS,EAAG,CAE9B,IAAMwnD,EAAU9jD,EAAMgb,QAAO,SAAClhB,GAAD,OAAYA,EAAEuN,WAAW0Y,iBAAb,OAA+BhhB,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAiBghB,kBAClE,IAAnB+jC,EAAQxnD,SAEVkE,EAAUuI,WAAW+6C,EAAQ,GAAGrpD,UAChC8F,EAAoBhB,gBAAgBV,IAK1C,OACE,gCACE,qMAIA,sBAAK1E,UAAU,cAAf,UACE,gCACE,6CADF,KAC6B4E,KAE7B,sBAAK5E,UAAU,OAAf,UACE,0CADF,KAhCW,SAAC0pD,GAChB,GAAIA,EAAa,CACf,IAAMC,EAAU9jD,EAAMgb,QAAO,SAAClhB,GAAD,OAAYA,EAAEuN,WAAW0Y,gBAAkB8jC,EAAY9jC,iBAEpF,OAA0B,IAAnB+jC,EAAQxnD,OAAewnD,EAAQ,GAAG5pD,KAAlC,mCAAqE4pD,EAAQxnD,OAA7E,MA6BqBu5C,CAAS92C,SAGrC,cAAC,GAAD,CAAoBqL,OAAO,OAAO+yC,iBAAiB,IACnD,mBAAGhjD,UAAU,OAAb,SACE,4E,UCvDF+qD,GAAmB,SAAC,GAAqC,IAAnC/tB,EAAkC,EAAlCA,SAa1B,OAZS,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAAUtxB,KAAI,SAAC/L,EAAQuE,GACjC,OACE,eAAC8mD,GAAA,EAAD,WACE,2CAAcrrD,EAAEsrD,OAChB,cAACnrD,EAAA,EAAD,CACEC,MAAyB,IAAnBJ,EAAEurD,aAAwB,SAAW,iBAC3CzjD,OAA0B,IAAnB9H,EAAEurD,aAAwB,QAAU,OAC3CrnD,KAAK,UALT,mBAA6BK,QA4EpBinD,GA/DQt9C,aAAS,WAAO,IAAD,UAgBF,MAhBE,EACOtH,IAAnCJ,EAD4B,EAC5BA,UAAWC,EADiB,EACjBA,oBACbxB,EAAkBwB,EAAoBm8C,qBACxC6I,EAAwB,KACxBC,EAAoB,EAJY,EAQat+C,aAAO,kBAAD,OACnCnI,IAClB,SAAC0D,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBACpC,CACEuQ,gBAAiB,MAJT+tC,EARwB,EAQ9BpiD,MAR8B,EAQXH,OAQJuiD,IAEnBD,EAAiB,UADjBD,EAAgB,OAAGE,QAAH,IAAGA,GAAH,UAAGA,EAAa59C,sBAAhB,iBAAG,EAA6B2rC,iBAAhC,aAAG,EAAwCkS,yBAC1C,aAAG,EAAkB1qC,QAAO,SAAClhB,GAAD,OAA+B,IAAnBA,EAAEurD,gBAAuB/oD,QASpF,OANIkpD,GAhB6B,EAiB/BjlD,EAAoBhB,gBAAgBgB,EAAoBnB,kBAExDmB,EAAoBukD,kBAAkBvkD,EAAoBnB,kBAI1D,gCACE,qBACEuL,IAAI,iDACJoN,IAAI,6BACJ5d,UAAU,uBAEZ,oBAAGA,UAAU,OAAb,8BA7B6B,EA6B7B,sKAGA,iGAGA,cAAC+iB,GAAA,EAAD,CAAM2X,QAAS,EAAG16B,UAAU,kCAAkCgqD,SAAO,EAACpE,QAAM,EAA5E,SACE,cAAC,GAAD,CAAkB5oB,SAAUouB,MAE9B,eAACv6C,GAAA,EAAD,CAAS7Q,UAAU,OAAOyH,MAAO4jD,GAAqB,EAAI,OAAS,MAAnE,UACE,cAACx6C,GAAA,EAAQtD,OAAT,qBACA,8BACG89C,GAAqB,EACpB,sBAAK74C,MAAK,OAAE84C,QAAF,IAAEA,GAAF,UAAEA,EAAa59C,sBAAf,iBAAE,EAA6B2rC,iBAA/B,aAAE,EAAwCh9B,QAApD,UACE,cAACvc,EAAA,EAAD,CAAMC,KAAK,QAAQ0H,MAAM,QAAQzH,UAAU,SAD7C,sBAEesrD,QAFf,IAEeA,GAFf,UAEeA,EAAa59C,sBAF5B,iBAEe,EAA6B2rC,iBAF5C,aAEe,EAAwCh9B,QAFvD,OAKA,gCACE,cAACvc,EAAA,EAAD,CAAMC,KAAK,uBAAuB0H,MAAM,MAAMzH,UAAU,OAAOwS,MAAK,OAAE84C,QAAF,IAAEA,GAAF,UAAEA,EAAa39C,aAAf,aAAE,EAAoB0O,UAD5F,2BA/CuB,EA+CvB,2D,UCzCGmvC,GA9BM,SAAC,GAMf,IALLC,EAKI,EALJA,gBACAC,EAII,EAJJA,cAKA,OACE,cAAC3oC,GAAA,EAAD,CAAM2X,QAAS+wB,EAAf,SACG,aAAIrgD,MAAMsgD,IAAgBhgD,KAAI,SAAC/L,EAAQgsD,GACtC,OACE,cAAC5oC,GAAA,EAAKE,OAAN,UACE,cAACjP,GAAA,EAAD,CAAS2xC,QAAM,EAAf,SACE,eAACiG,GAAA,EAAD,WACE,cAACA,GAAA,EAAYr+C,OAAb,CAAoBs+C,OAAK,EAAzB,SACE,cAACD,GAAA,EAAYjtC,KAAb,CAAkBxc,OAAO,aAE3B,eAACypD,GAAA,EAAYE,UAAb,WACE,cAACF,GAAA,EAAYjtC,KAAb,CAAkBxc,OAAO,SACzB,cAACypD,GAAA,EAAYjtC,KAAb,CAAkBxc,OAAO,kBARjC,sBAAiCwpD,UCMrCI,GAAa,SAAC,GAQC,IAPnBC,EAOkB,EAPlBA,WACAC,EAMkB,EANlBA,YACAC,EAKkB,EALlBA,SAMA,OACE,qCACE,eAACnpC,GAAA,EAAD,CAAMC,cAAc,SAApB,UACE,cAACgoC,GAAA,EAAD,CACE3jD,MAAO,EACP2b,cAAc,SAFhB,UAIkB,IAAfgpC,GACC,qCACE,qBACEx7C,IAAI,sBACJoN,IAAI,oBACJvW,MAAM,OACNrH,UAAU,SALd,8BAWJ,cAACgrD,GAAA,EAAD,CACE3jD,MAAO,GACPkH,UAAU,QAFZ,SAIE,8BACE,sBAAMvO,UAAU,OAAhB,SACE,eAACuS,GAAA,EAAD,CACEjT,QAAS,kBAAM2sD,GAAaC,IAC5BroD,KAAK,OACLirC,UAAQ,EACRrnC,MAAM,OACNzH,UAAU,WALZ,iCAQE,cAACF,EAAA,EAAD,CACEC,MAAmB,IAAbmsD,EAAoB,aAAe,eACzClsD,UAAU,qBAQrBksD,GACC,cAAC,GAAD,CACE7iD,OAAQ4iD,EACRloD,MAAOmoD,QAOXC,GAAmB,SAAC,GAOd,IANVC,EAMS,EANTA,cACAC,EAKS,EALTA,kBACAC,EAIS,EAJTA,eACAC,EAGS,EAHTA,WACAz7B,EAES,EAFTA,WACA07B,EACS,EADTA,OAOMC,EAAQ,OAAG37B,QAAH,IAAGA,OAAH,EAAGA,EAAY3uB,OAC7B,OACE,qCACE,qBAAInC,UAAU,kBAAd,UACGysD,EAAW,SAAW,MADzB,IACiCH,EAAelpD,YADhD,gBAC0EkpD,EAAetG,cADzF,OAGA,mIACA,oBAAGhmD,UAAU,OAAb,yBAEE,cAACyV,GAAA,EAAD,CAAOhO,MAAM,OAAOzH,UAAU,OAA9B,4CAIF,cAAC0S,GAAA,EAAD,UACE,eAACA,GAAA,EAAK0Q,MAAN,CAAYspC,OAAO,QAAnB,UACE,cAACh6C,GAAA,EAAKyE,MAAN,CACEw1C,UAAU,EACV75C,MAAM,cACNzE,YAAY,oCACZtO,KAAK,cACLusC,aAAcxb,EACd87B,OAAQ,SAACjtD,GAAD,OAAYysD,EAAczsD,EAAEsH,OAAOlD,UAE7C,cAAC2O,GAAA,EAAKC,MAAN,CACEG,MAAM,gBACNzE,YAAY,8BACZtK,MAAK,OAAEuoD,QAAF,IAAEA,OAAF,EAAEA,EAAgBtG,cACvBjmD,KAAK,gBACL8sD,QAAQ,QACR95C,UAAQ,IAEV,cAACL,GAAA,EAAKC,MAAN,CACEG,MAAM,cACN+5C,QAAQ,SACRr6C,MAAM,qCACNzO,MAAK,OAAEuoD,QAAF,IAAEA,OAAF,EAAEA,EAAgBlpD,YACvB2P,UAAQ,EALV,SAOE,cAAC,GAAD,CACE+5C,cAAa,OAAER,QAAF,IAAEA,OAAF,EAAEA,EAAgBlpD,gBAGnC,cAACsP,GAAA,EAAKC,MAAN,CAAYtL,MAAO,EAAGrH,UAAU,cAAhC,SACE,qBAAKwQ,IAAG,gCAAoB87C,QAApB,IAAoBA,OAApB,EAAoBA,EAAgBlpD,YAApC,QAAuDwa,IAAI,cAAcvW,MAAO,YAI9F,sBAAKrH,UAAU,mBAAf,UACE,cAACuS,GAAA,EAAD,CAAQ9K,MAAM,OAAOzH,UAAU,OAAOV,QAAS,kBApDnD+sD,EAAkB,WAClBD,EAAc,OAmDV,oBAGA,cAAC75C,GAAA,EAAD,CACE9K,MAAM,QACNzH,UAAU,gBACVmO,QAAQ,OACR7O,QAAS,kBAAMitD,EAAWD,EAAgBx7B,IAC1C/d,SAAUy5C,KAAU,OAAC17B,QAAD,IAACA,OAAD,EAACA,EAAY3uB,QACjCyS,QAAS43C,WAcbO,GAAoB,SAAC,GAA4B,IAA1B1jD,EAAyB,EAAzBA,OAAQtF,EAAiB,EAAjBA,MACnC,OACE,eAAC8M,GAAA,EAAD,CAASm8C,UAAW,kBAAM3jD,GAAQtF,IAAQ/D,UAAU,OAApD,UACE,cAAC6Q,GAAA,EAAQtD,OAAT,iDACA,yNAIA,eAACsD,GAAA,EAAQyE,KAAT,WACE,cAACzE,GAAA,EAAQ3R,KAAT,wHAGA,cAAC2R,GAAA,EAAQ3R,KAAT,qGAGA,cAAC2R,GAAA,EAAQ3R,KAAT,gJAIA,cAAC2R,GAAA,EAAQ3R,KAAT,oHAGA,cAAC2R,GAAA,EAAQ3R,KAAT,0GAYF+tD,GAAa,SAAC,GAYb,IAXLltD,EAWI,EAXJA,KACAkM,EAUI,EAVJA,KACAihD,EASI,EATJA,OACAC,EAQI,EARJA,QACA7I,EAOI,EAPJA,IAQM8I,GAAiB,OAAJrtD,QAAI,IAAJA,OAAA,EAAAA,EAAMoC,QAASpC,EAAf,UAAyBkM,EAAzB,WACnB,OACE,eAACm1B,GAAA,EAAK5zB,QAAN,WACE,cAAC4zB,GAAA,EAAK7zB,OAAN,UACE,qBAAIvN,UAAU,kBAAd,UACE,qBAAKwQ,IAAG,yBAAoBvE,EAApB,QAAgC2R,IAAI,cAAcvW,MAAO,GAAIrH,UAAU,SAC9EotD,OAGL,cAAChsB,GAAA,EAAKisB,KAAN,IACA,eAACjsB,GAAA,EAAK5rB,YAAN,WACE,8BACE,cAAC1V,EAAA,EAAD,CAAMC,KAAK,gBACVkM,KAEH,8BACE,cAACnM,EAAA,EAAD,CAAMC,KAAK,cACVmtD,KAEH,8BACE,cAACptD,EAAA,EAAD,CAAMC,MAAkB,IAAZotD,EAAmB,QAAU,cACxCA,EAAU,0BAA4B,qBAEzC,8BACE,cAACrtD,EAAA,EAAD,CAAMC,KAAK,gBACVukD,YAcLgJ,GAAa,SAAC,GAAsF,IAAD,EAAnF1J,EAAmF,EAAnFA,QAASyI,EAA0E,EAA1EA,kBAAmBD,EAAuD,EAAvDA,cAAelU,EAAwC,EAAxCA,KAEzDqV,EAA8B,OAFmE,EAAlCC,OAGjEC,EAAkB,IAGpBA,EADEF,EACa,OAAG3J,QAAH,IAAGA,OAAH,EAAGA,EAAS/iC,QAAO,SAAClhB,GAAD,OAAyB,OAAbA,EAAEiD,UAEjC,OAAGghD,QAAH,IAAGA,OAAH,EAAGA,EAAS/iC,QAAO,SAAClhB,GAAD,OAAYA,EAAEyD,YAAYjB,OAAS,MAGvDmX,MAAK,SAAClR,EAAQmR,GAC5B,OAAInR,EAAEhF,cAAgBmW,EAAEnW,YACfgF,EAAEk8C,IAAM/qC,EAAE+qC,KAAO,EAAI,EAErBl8C,EAAEhF,YAAcmW,EAAEnW,aAAe,EAAI,KAM5CmqD,IACFE,EAAkBA,EAAgB/hD,KAAI,SAAC/L,GAAY,IAAD,YAChD,MAAO,CACLW,SAAQ,OAAEX,QAAF,IAAEA,GAAF,UAAEA,EAAGiD,cAAL,aAAE,EAAWtC,SACrBC,UAAS,OAAEZ,QAAF,IAAEA,GAAF,UAAEA,EAAGiD,cAAL,aAAE,EAAWrC,UACtBR,KAAI,OAAEJ,QAAF,IAAEA,GAAF,UAAEA,EAAGiD,cAAL,aAAE,EAAW7C,KACjBukD,KAAM,OAAD3kD,QAAC,IAADA,GAAA,UAAAA,EAAGiD,cAAH,eAAW0hD,MAAO,MACvBlhD,YAAW,OAAEzD,QAAF,IAAEA,GAAF,UAAEA,EAAGiD,cAAL,aAAE,EAAWQ,YACxB4iD,cAAa,OAAErmD,QAAF,IAAEA,GAAF,UAAEA,EAAGiD,cAAL,aAAE,EAAWO,UAC1B2iD,YAAY,EACZG,kBAAkB,OAMxB,IAAMyH,EAAe,SAAC/tD,GACpB0sD,EAAkB1sD,GAClBysD,EAAa,OAACzsD,QAAD,IAACA,OAAD,EAACA,EAAGI,OAGb4tD,EAAOF,EAAgB/hD,KAAI,SAAC/L,EAAQqF,GACxC,OACE,eAACo8B,GAAA,EAAD,CAA4B9hC,QAAS,kBAAMouD,EAAa/tD,IAAxD,UACE,cAAC,GAAD,CACEI,KAAMJ,EAAEI,KACRkM,KAAMtM,EAAEyD,YACR8pD,OAAQvtD,EAAEqmD,cACVmH,QAASxtD,EAAEsmD,iBACX3B,IAAK3kD,EAAE2kD,MAET,cAACljB,GAAA,EAAK5zB,QAAN,CAAcogD,OAAK,EAAnB,SACE,cAACr7C,GAAA,EAAD,CAAQvS,UAAWutD,EAAmB,GAAH,2BAAoCj/C,OAAK,EAAChP,QAAS,kBAAMouD,EAAa/tD,IAAzG,SACG4tD,EAAmB,cAAgB,mBAV1C,eAAmBvoD,OAgBvB,OACE,qCACE,gCAAoB,QAAf,EAAAyoD,SAAA,eAAiBtrD,QAAS,EAAIsrD,EAAgBtrD,OAAS,GAA5D,gCACA,cAACi/B,GAAA,EAAKhe,MAAN,CACEyqC,YAAa3V,EADf,SAGGyV,QAMHG,GAAqB,SAAC,GAAiD,EAA/ChB,cAAgD,IAoBxEiB,EAnBgB,CAClB,CACEhqD,MAAO,SACPhE,KAAM,UAER,CACEgE,MAAO,OACPhE,KAAM,gBAER,CACEgE,MAAO,WACPhE,KAAM,YAER,CACEgE,MAAO,YACPhE,KAAM,cAIe2L,KAAI,SAAC/L,GAC5B,OAAO,wBAAQoE,MAAOpE,EAAEoE,MAAjB,SAAyBpE,EAAEI,UAGpC,OAAO,mCAAGguD,KAGNC,GAAcngD,aAAS,WAAO,IAAD,EACqBtH,IAA9CJ,EADyB,EACzBA,UAAWE,EADc,EACdA,UAAWD,EADG,EACHA,oBADG,EAEDkL,oBAAS,GAFR,mBAE1B46C,EAF0B,KAEhBD,EAFgB,OAGL36C,oBAAS,GAHJ,mBAG1Bk7C,EAH0B,KAGlByB,EAHkB,KAI3BphD,EAAQrG,qBAAWsG,IAJQ,EAKGwE,mBAAS,IALZ,mBAK1Bwf,EAL0B,KAKds7B,EALc,OAMW96C,mBAAsC,MANjD,mBAM1Bg7C,EAN0B,KAMVD,EANU,KAO3B5mD,EAAUY,EAAUyB,aACtB87C,EAAe,GACfoI,GAAa,EAOXO,EAAU,uCAAG,WAAOrjD,EAAWnJ,GAAlB,qBAAAqI,EAAA,yDACjB6lD,GAAU,GAENC,GAAiB,IAHJ,OAKbhlD,QALa,IAKbA,GALa,UAKbA,EAAM5I,gBALO,aAKb,EAAgB6B,QALH,gCAMEqH,EAAY,kBAAD,OACRN,EAAK9F,YADG,YACY8F,EAAK88C,cADjB,iBAE1B7/C,EAAU6G,mBACV,CACE3D,OAAQ,MACRC,KAAMvJ,EACN6J,KAAK,IAZM,OAMfrB,EANe,qCAiBf2lD,GAAiB,EACXliB,EAA4B,CAChC1rC,SAAU,GACVC,UAAWiK,GACXrH,UAAW+F,EAAK88C,cAChB5iD,YAAa8F,EAAK9F,YAClBrD,KAAMA,EAAKoC,OAAS,EAAIpC,EAAlB,UAA4BmJ,EAAK9F,YAAjC,YAAgD8F,EAAK88C,gBAvB9C,UA2BEx8C,EAAY,uBAAD,OAAwB/D,GAAWU,EAAU6G,mBAAoB,CAC3F3D,OAAQ,MACRO,KAAK,EACLN,KAAM0iC,IA9BO,QA2BfzjC,EA3Be,eAiCbA,EAASM,IACXgE,EAAMgL,QAAQq2C,EAAiB,gBAAkB,uBAEjDp2C,aAAO,uBAAD,OAAwBrS,IAxChC4mD,EAAkB,MAClBD,EAAc,KA2CZv/C,EAAM9D,MAAM,iGAEdklD,GAAU,GA1CO,4CAAH,wDAhBiB,EA8DwBlhD,aAAO,6BAAD,OAChCtH,IAC7B,SAAC6C,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,sBACpC,CACEuQ,gBAAiB,MAJP4wC,EA9DmB,EA8DzBjlD,KAA2BklD,EA9DF,EA8DLrlD,MA9DK,EAuE8BgE,aAAO,uBAAD,OAAwBtH,IAAW,SAAC6C,GAAD,OACtGkB,EAAYlB,EAAKnC,EAAU6G,uBADfqhD,EAvEmB,EAuEzBnlD,KAvEyB,EAuEFH,OAK7B8D,EAAM9D,MAAM,4BAA8BslD,EAAgBr9C,YAGxDo9C,EACFvhD,EAAM9D,MAAMqlD,EAAkBp9C,YACrBm9C,IACTnC,EAAamC,EAAatH,YAC1BjD,EAAUuK,EAAa97C,QAGzB,IAAIi8C,EAAY,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAiBxtC,QAAO,SAAClhB,GAAD,OAAyB,OAAbA,EAAEiD,UAQzD,OANgB,OAAZ0rD,QAAY,IAAZA,OAAA,EAAAA,EAAcnsD,SAAU,EAC1BiE,EAAoBhB,gBAAgBgB,EAAoBnB,kBAExDmB,EAAoBukD,kBAAkBvkD,EAAoBnB,kBAGxDqnD,EAEA,cAAC,GAAD,CACEF,cAAeA,EACfC,kBAAmBA,EACnBC,eAAgBA,EAChBC,WAAYA,EACZz7B,WAAYA,EACZ07B,OAAQA,IAKV,gCACE,cAACzpC,GAAA,EAAD,UACE,eAACioC,GAAA,EAAD,CAAY3jD,MAAO,GAAIrH,UAAU,OAAjC,UACE,cAACuQ,EAAA,EAAD,CACEC,IAAI,+CACJoN,IAAI,6BACJ5d,UAAU,wBAEZ,sJAIA,iNAMJ,yDACC,OAACsuD,QAAD,IAACA,OAAD,EAACA,EAAcnsD,QAGd,cAAC,GAAD,CACEyhD,QAASyK,EACTb,OAAO,KACPnB,kBAAmBA,EACnBD,cAAeA,EACflU,KAAM,IAPR,sDAUF,oBAAIl4C,UAAU,SACd,cAAC,GAAD,CACEgsD,WAAYA,EACZC,YAAaA,EACbC,SAAUA,IAGVtI,EAAQzhD,OAMR,qBAAKnC,UAAU,OAAf,SACE,cAAC,GAAD,CACEk4C,KAAM,EACN0L,QAASA,EACT4J,OAAO,KACPnB,kBAAmBA,EACnBD,cAAeA,MAXnB,cAAC,GAAD,CACEX,gBAAiB,EACjBC,cAAe,UC/YZ6C,GAzFA,WAAO,IAAD,EACkChoD,IAA7CL,EADW,EACXA,SAAUC,EADC,EACDA,UAAWC,EADV,EACUA,oBACrBrH,EAAWC,cAAXD,OACF+O,EAAUC,cACVygD,EAAShoD,qBAAWsG,IAJP,EAKSwE,oBAAS,GALlB,mBAKZk7C,EALY,KAKJyB,EALI,KAOfQ,EAAcvoD,EAAS4iD,UAAU1oD,MAAQ,kBAAoB,kBAC7DmqD,EAAWrkD,EAAS4iD,UACxB2F,GAAW,WAAQC,EAAQ1mD,SAE3B,IAAM2mD,EAAa,uCAAG,sBAAAvmD,EAAA,yDACf5I,OAAOkmB,QAAQ,oGADA,oDAKf6kC,EAASlqD,MALM,uBAMlBmuD,EAAOzlD,MAAM,wFANK,iCAUpBwhD,EAASlqD,MAAMI,2BAA4B,EAC3CwtD,GAAU,GAXU,SAaEzkD,EAAY,6BAA8BrD,EAAU6G,mBAAoB,CAC5F3D,OAAQ,MACRC,KAAMihD,EAASlqD,MACfuJ,KAAK,IAhBa,cAmBRf,IAEVzC,EAAoByjD,mBAAmB,IAEvC3jD,EAAS0oD,QAAQrE,EAASlqD,MAAOkqD,EAASnqD,OAC1C0X,aAAO,8BAKPxF,YAAW,WAETpM,EAASc,cAAc,gBACvB8G,EAAQy4B,QAAQ,OACf,OAEHioB,EAAOzlD,MAAM,kCACbwhD,EAASlqD,MAAMI,2BAA4B,EAC3CwtD,GAAU,IArCQ,4CAAH,qDAyCnB,OACE,yBAAQjuD,UAAU,wCAAlB,UACE,sBAAKA,UAAU,eAAf,UACE,cAACoQ,EAAA,EAAD,CACEjC,QACE,qCACE,wDACA,oIAGJ8E,GAAG,QACH3G,SAAS,YACTuC,QACE,eAAC0D,GAAA,EAAD,CACEjT,QAAS,kBAAMqvD,KACflnD,MAAM,QACN5D,KAAK,OACL7D,UAAU,OACV4U,SAAoB,IAAX43C,EACTz5C,UAAqB,IAAXy5C,EANZ,iBASE,cAAC1sD,EAAA,EAAD,CAAMC,KAAK,uBAMjB,cAACwS,GAAA,EAAD,CAAQjT,QAAS,kBAAMP,KAAU0I,MAAM,MAAM5D,KAAK,OAAlD,wBAIF,sBAAM7D,UAAU,0CAAhB,SAA2DyuD,QCtE3DnF,GAAiC,CACrC,CACEx4C,KAAM,OACNsL,QAAS,YACTtX,UAAW,EACX4L,UAAW64C,IAEb,CACEz4C,KAAM,OACNsL,QAAS,sBACTtX,UAAW,EACX4L,UAAWu5C,IAEb,CACEn5C,KAAM,aACNsL,QAAS,gBACTtX,UAAW,EACX4L,UAAWm+C,IAEb,CACE/9C,KAAM,OACNsL,QAAS,oBACTtX,UAAW,EACX4L,UAAWy6C,IAEb,CACEr6C,KAAM,UACNsL,QAAS,kBACTtX,UAAW,EACX4L,UF+cWs9C,IE7cb,CACEl9C,KAAM,oBACNsL,QAAS,kBACTtX,UAAW,EACX4L,UCnDkB,WAAO,IAAD,EAC2BnK,IAA7CL,EADkB,EAClBA,SAAUC,EADQ,EACRA,UAAWC,EADH,EACGA,oBADH,EAEEkL,oBAAS,GAFX,mBAEnBk7C,EAFmB,KAEXyB,EAFW,KAGpBO,EAAShoD,qBAAWsG,IACpBgB,EAAUC,cAIZw8C,EAAWrkD,EAAS4iD,UAClB6F,EAAa,uCAAG,WAAOG,GAAP,SAAA1mD,EAAA,0DAChBmiD,EAASlqD,MADO,wBAElB4tD,GAAU,GACV1D,EAASlqD,MAAMI,0BAA4BquD,EAHzB,SAKItlD,EAAY,6BAA8BrD,EAAU6G,mBAAoB,CAC5F3D,OAAQ,MACRC,KAAMihD,EAASlqD,MACfuJ,KAAK,IARW,cAUNf,IACV3C,EAAS0oD,QAAQrE,EAASlqD,MAAOkqD,EAASnqD,OAE1CgG,EAAoByjD,mBAAmB,IACvC2E,EAAO32C,QAAQ,uCAEf22C,EAAOzlD,MAAM,kCACbwhD,EAASlqD,MAAMI,2BAA4B,GAE7CqX,aAAO,8BACP5R,EAAS0oD,QAAQrE,EAASlqD,MAAOkqD,EAASnqD,OAC1C6tD,GAAU,GArBQ,wBAuBlBO,EAAOzlD,MACL,uGAxBgB,4CAAH,sDAiCnB,OAHiD,IAA7CwhD,EAASlqD,MAAMI,2BACjBkuD,GAAc,GAGd,gCACE,qBACEn+C,IAAI,qCACJoN,IAAI,0BACJ5d,UAAU,uBAEZ,+EAGA,8CACA,kQAGA,uRAIA,6FAGA,8CACA,oIAGA,4FAICwsD,GACC,sBAAKxsD,UAAU,OAAf,UACE,cAACF,EAAA,EAAD,CAAMC,KAAK,UAAU6U,SAAO,IAD9B,iBAI4C,IAA7C21C,EAASlqD,MAAMI,2BACd,cAAC8R,GAAA,EAAD,CACE9K,MAAM,OACNzH,UAAU,MACVsO,OAAK,EACLwC,KAAK,gBACL3C,QAAQ,+BACR0H,cAAc,QACd9C,UAAWw3C,EAASlqD,MAAMI,0BAC1BmU,QAAS43C,EACTltD,QAAS,WAhFfwO,EAAQy4B,QAAQ,cDuDpB,SAASwoB,GAAT,GAA0D,IAAzCrqD,EAAwC,EAAxCA,YACTsqD,EAAY1F,GAAS59C,KAAI,SAACykB,EAAM7qB,GAEpC,IAAM2pD,EAAiD,IAAlC3F,GAAShkD,GAAWR,UACzC,OACE,eAACoqD,GAAA,EAAD,CAAMtnD,OAAQtC,IAAcZ,EAA5B,UACE,cAAC5E,EAAA,EAAD,CAAMC,KAAMkvD,EAAe,QAAU9+B,EAAKrf,KAAMrJ,MAAOwnD,EAAe,QAAU,UAChF,cAACC,GAAA,EAAK1hD,QAAN,UACE,cAAC0hD,GAAA,EAAKhoC,MAAN,UAAaiJ,EAAK/T,cAHwB,QAAU9W,MAQ5D,OACE,cAAC4pD,GAAA,EAAK9rC,MAAN,CAAY7b,UAAQ,EAAC1D,KAAK,OAAO7D,UAAU,QAA3C,SACGgvD,IAoBP,IAiEeG,GAjECthD,aAAS,WAAO,IACtBzH,EAAwBG,IAAxBH,oBACFgpD,EAAoBhpD,EAAoBipD,uBACxC1qD,EAAeyB,EAAoBkpD,kBACrCC,EAAa,6BACbC,EAAiB,6BACf9qD,EAAc0B,EAAoBnB,iBAiBxC,OAhCF,SAA2BP,GACzB,OAAOA,IAAgB4kD,GAASnnD,OAAS,EAepCstD,CAAkB/qD,IAAgBC,IACrC4qD,EACE,eAACh9C,GAAA,EAAD,CAAQ9K,MAAM,QAAQsL,UAAWq8C,EAAmB9vD,QAAS,kBAAM8G,EAAoBspD,SAAS,SAAhG,UACE,sBAAM1vD,UAAU,YAAhB,sBACA,cAACF,EAAA,EAAD,CAAMC,KAAK,gBAAgBC,UAAU,kBAIvC0E,EAAc,IAChB8qD,EACE,eAACj9C,GAAA,EAAD,CAAQ9K,MAAM,OAAOnI,QAAS,kBAAM8G,EAAoBspD,SAAS,SAAjE,UACE,cAAC5vD,EAAA,EAAD,CAAMC,KAAK,iBADb,WAOF,sBAAKC,UAAU,+BAAf,UACE,eAAC+iB,GAAA,EAAD,CAAM/iB,UAAU,OAAhB,WAGqB,IAAjB2E,GACE,cAACoe,GAAA,EAAKE,OAAN,CAAajjB,UAAU,uCAAuCkjB,SAAU,EAAxE,SACE,cAAC6rC,GAAD,CAAOrqD,YAAaA,MAI1B,cAACqe,GAAA,EAAKE,OAAN,CACEjjB,UAAS,yBAAoB2E,EAAe,kBAAoB,IAChEue,UAA2B,IAAjBve,EAAwB,GAAK,GACvCwe,OAAQ,GAHV,SAKGxe,EACC,qBAAK3E,UAAU,WAAf,SACE,cAAC,GAAD,CAAa0E,YAAaA,EAAa4kD,SAAUA,OAGnD,qBAAKtpD,UAAU,OAAf,SACE,cAAC6oD,GAAD,QAILlkD,GACC,sBAAK3E,UAAU,yCAAf,UACGwvD,EACAD,EACD,qBAAKvvD,UAAU,OAAf,SACE,cAACkpD,GAAD,YAMR,cAAC,GAAD,UEyWSyG,GAzgBF,WAAO,IAAD,EACqBr+C,mBAAiB,GADtC,mBACV8U,EADU,KACGC,EADH,KAEX8wB,EAAc,SAACx3C,EAAQiwD,GAAoB,IAEvC5qD,EAAU4qD,EAAV5qD,MAGRqhB,EAFiBD,IAAgBphB,GAAS,EAAIA,IAK1C6qD,EAAe,CACnB,CACEr9C,MAAO,gCACPq5C,MAAO,0BACPiE,QAAS,uFACTr5B,YAAa,qCACX,mDADW,gFAGX,+BACE,+BAAI,yDAAJ,iDACA,+BAAI,oDAAJ,4BACA,+BAAI,wDAAJ,0DACA,+BAAI,wDAAJ,gDACA,+BAAI,mDAAJ,sDACA,+BAAI,uDAAJ,mFACA,+BAAI,kDAAJ,+CAGF,6CACA,6BACE,4GAGJ9iB,MAAO,MAET,CACEnB,MAAO,sCACPq5C,MAAO,aACPiE,QAAS,uPACTr5B,YAAa,GACb9iB,MAAO,CACL,CACEnB,MAAO,kBACPrE,QACE,qCACE,oGACA,4lBAUN,CACEqE,MAAO,8CACPrE,QACE,qCACE,0CACA,iFAGA,gFACA,oBAAInO,UAAU,SAAd,SACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,UACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,mBAaR,CACEwS,MAAO,qBACPrE,QACE,qCACE,0CACA,kEAGA,0CACA,gLAKA,gFACA,qBAAInO,UAAU,SAAd,UACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,UACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,aASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,eACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,gBASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,aACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,uBAaR,CACEwS,MAAO,mBACPrE,QACE,qCACE,0CACA,2GAIA,0CACA,2LAKA,gFACA,qBAAInO,UAAU,SAAd,UACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,UACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,aASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,eACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,gBAQA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,aACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,uBAaR,CACEwS,MAAO,sBACPrE,QACE,qCACE,0CACA,4FAIA,0CACA,6MAKA,gFACA,qBAAInO,UAAU,SAAd,UACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,UACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,aASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,eACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,gBASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,aACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,uBAaR,CACEwS,MAAO,mBACPrE,QACE,qCACE,0CACA,0FAIA,0CACA,sQAMA,gFACA,oBAAInO,UAAU,SAAd,SACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,YACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,qBAaR,CACEwS,MAAO,qBACPrE,QACE,qCACE,0CACA,iGAGA,0CACA,6TAOA,gFACA,qBAAInO,UAAU,SAAd,UACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,UACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,aASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,eACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,uBAaR,CACEwS,MAAO,eACPrE,QACE,qCACE,0CACA,gFAGA,0CACA,+PAMA,gFACA,qBAAInO,UAAU,SAAd,UACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,UACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,aASA,qBAAIA,UAAU,iCAAd,UAEE,qBACEwQ,IAAKxE,GAAmB,eACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SANd,gBAUA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,aACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,gBASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,YACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,sBAaR,CACEwS,MAAO,wBACPrE,QACE,qCACE,0CACA,4DAGA,0CACA,mhBAUA,gFACA,oBAAInO,UAAU,SAAd,SACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,eACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,sBAaR,CACEwS,MAAO,iBACPrE,QACE,qCACE,0CACA,gFAGA,gFACA,qBAAInO,UAAU,SAAd,UACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,UACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,aASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,eACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,uBAYR,CACEwS,MAAO,gBACPrE,QACE,qCACE,0CACA,uGAGA,gFACA,qBAAInO,UAAU,SAAd,UACE,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,eACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,gBASA,qBAAIA,UAAU,iCAAd,UACE,qBACEwQ,IAAKxE,GAAmB,YACxB4R,IAAI,sBACJvW,MAAO,GACPrH,UAAU,SALd,yBAgBd,OACE,8BACE,eAACgU,GAAA,EAAD,WACE,uCACA,8OACA,yIAGA,+BACE,+GACA,2FACA,gGAED67C,EAAankD,KAAI,SAACqkD,EAAUC,GAC3B,OACE,gCAEE,qBAAIhwD,UAAU,4BAAd,UACE,qBACEwQ,IAAG,kBAAau/C,EAASlE,OACzBjuC,IAAI,sBACJ5d,UAAU,OACV0H,MAAO,CAAEL,MAAO,MAGjB0oD,EAASv9C,SAEZ,qBAAKxS,UAAU,OAAf,SACG+vD,EAASD,UAEXC,EAASt5B,aAED,OAARs5B,QAAQ,IAARA,OAAA,EAAAA,EAAUp8C,QACT,cAACqT,GAAA,EAAD,CACE1Y,OAAK,EACL2hD,QAAM,EAFR,SAKGF,EAASp8C,MAAMjI,KAAI,SAAC6+B,EAAM2lB,GACzB,OACE,gCACE,eAAClpC,GAAA,EAAUE,MAAX,CACEtf,OAAQwe,IAAgB8pC,EACxBlrD,MAAOkrD,EACP5wD,QAAS63C,EAHX,UAME,cAACr3C,EAAA,EAAD,CACEC,KAAMqmB,IAAgB8pC,EAAY,aAAe,iBAElD3lB,EAAK/3B,QATR,yBAIyB09C,IAOzB,cAAClpC,GAAA,EAAUxZ,QAAX,CACE5F,OAAQwe,IAAgB8pC,EAD1B,SAIG3lB,EAAKp8B,SAJR,2BAE2B+hD,MAd7B,mBAAsBA,WAzBhC,6BAAgCF,aCzX7BG,GAhEC,SAAC,GAAgF,IAA9EvpD,EAA6E,EAA7EA,YAAaC,EAAgE,EAAhEA,oBAAqB4I,EAA2C,EAA3CA,cAAe2gD,EAA4B,EAA5BA,QAC5DC,EAAa1lC,iBAAO,MAE1B,OACE,cAACxjB,EAAA,EAAQmpD,SAAT,CAAkBprD,GAAG,UAArB,SACE,cAACiC,EAAA,EAAQopD,OAAT,CACE7oD,MAAO,CACLL,MAAOT,EAAc,qBAAuB,OAC5CoX,UAAW,qBACXM,KAAM1X,EAAc,QAAU,EAC9Bi0B,WAAY,iBALhB,SAQE,cAAC,WAAD,UACE,cAAC21B,GAAA,EAAD,CAAKC,SAAUJ,EAAf,SACE,cAAC,GAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CACEK,KAAK,sBACLp4B,OAAQ,SAAC7uB,GAAD,OAAW,cAAC,GAAD,cAAWgG,cAAeA,GAAmBhG,OAElE,cAAC,IAAD,CAAOinD,KAAK,qBAAqBp4B,OAAQ,kBAAM,cAAC,GAAD,OAC/C,cAAC,IAAD,CACEo4B,KAAK,kCACLp4B,OAAQ,SAAC7uB,GAAD,OAAW,cAAC,GAAD,cAAc5C,oBAAqBA,GAAyB4C,OAEjF,cAAC,IAAD,CAAOknD,OAAK,EAACD,KAAK,IAAIp4B,OAAQ,kBAAM,cAAC,GAAD,OACpC,cAAC,IAAD,CAAOq4B,OAAK,EAACD,KAAK,WAAWp4B,OAAQ,kBAAM,cAAC,GAAD,OAC1C83B,GACC,cAAC,IAAD,CAAOM,KAAK,sBAAsBp4B,OAAQ,kBAAM,cAAC,GAAD,CAAYwhB,YAAY,wBAE1E,cAAC,IAAD,CAAO4W,KAAK,SAASp4B,OAAQ,SAAC7uB,GAAD,OAAW,cAAC,GAAD,OACxC,cAAC,IAAD,CAAOinD,KAAK,QAAQp4B,OAAQ,SAAC7uB,GAAD,OAAW,cAAC,GAAD,OACvC,cAAC,IAAD,CAAOinD,KAAK,WAAWp4B,OAAQ,SAAC7uB,GAAD,OAAW,cAAC,GAAD,OAC1C,cAAC,IAAD,CAAOinD,KAAK,qBAAqBp4B,OAAQ,SAAC7uB,GAAD,OAAW,cAAC,GAAD,gBAAeA,OACnE,cAAC,IAAD,CAAOinD,KAAK,uBAAuBp4B,OAAQ,kBAAM,cAAC,GAAD,OACjD,cAAC,IAAD,CAAOo4B,KAAK,gBAAgBp4B,OAAQ,kBAAM,cAACs4B,GAAD,OACzCR,GACC,cAAC,IAAD,CACEM,KAAK,SACLp4B,OAAQ,WACN,OAAO,cAAC,GAAD,QAMX,EAIF,cAAC,IAAD,CACEo4B,KAAK,WACLp4B,OAAQ,kBAAM,cAAC,GAAD,qBCzD1Bu4B,GAAY,SAAC,GAAmC,EAAjCC,QAAkC,IAAzBV,EAAwB,EAAxBA,QACtB3wD,EAAWiQ,cAA6BE,SAASmhD,oBACjDjjD,EAAUC,cAFoC,EAGTxH,IAAnCL,EAH4C,EAG5CA,SAAUC,EAHkC,EAGlCA,UAAWE,EAHuB,EAGvBA,UAHuB,EAIlBiL,oBAAS,GAJS,mBAI7C1K,EAJ6C,KAIhC0qB,EAJgC,OAKJhgB,oBAAS,GALL,mBAK7C0/C,EAL6C,KAK3BnqD,EAL2B,OAMhByK,mBAAS,gBANO,mBAM7CxK,EAN6C,KAMjC2I,EANiC,KAO9CwhD,EAAoBxxD,EAASoQ,WAAW,YAPM,EAYV9C,aAAO,gBAAgB,SAACzE,GAAD,OAASkB,EAAYlB,EAAKnC,EAAU6G,uBAAvFnH,EAZsC,EAY5CqD,KAAoBmmC,EAZwB,EAY/BtmC,MAZ+B,EAcZgE,aAAO,8BAA8B,SAACzE,GAAD,OAC3EkB,EAAYlB,EAAKnC,EAAU6G,uBADfkkD,EAdsC,EAc5ChoD,KAAsBH,EAdsB,EActBA,MAI9B2U,qBAAU,WAERrX,EAAU8qD,SAAStrD,IAEV,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAO1D,QAAS,IAAmD,KAAhC,OAAd+uD,QAAc,IAAdA,OAAA,EAAAA,EAAgBzwD,6BAAuCwwD,GAC9E5qD,EAAUuI,WAAW/I,EAAM,GAAGvF,WAGkB,KAAhC,OAAd4wD,QAAc,IAAdA,OAAA,EAAAA,EAAgBzwD,6BAClByF,EAASc,cAAc,oBACvB8G,EAAQxL,KAAK,gBAGf,CACEuD,EACAQ,EACAH,EACAgrD,EACApjD,EACAmjD,IAEJ,IAAMG,EAAe,SAACh1C,EAAiBrT,GACrC,OACE,mCACE,eAAC8H,GAAA,EAAD,CACEC,MAAI,EACJ9Q,UAAU,eAFZ,UAIE,cAACF,EAAA,EAAD,CACEC,KAAK,eACL8D,KAAK,QACL7D,UAAU,cAEZ,eAAC6Q,GAAA,EAAQrD,QAAT,WACE,cAACqD,GAAA,EAAQtD,OAAT,CAAgBvN,UAAU,OAA1B,SACGoc,IAEH,8GACgFrT,KAChF,wEACyC,mBAAGsH,KAAK,iCAAR,qCADzC,sBAGA,cAAC,EAAD,aAMV,OAAItH,EACKqoD,EAAa,0CAA2CroD,EAAMiI,YAGnEq+B,EACK+hB,EAAa,kCAAmC/hB,EAAUr+B,YAG9DkgD,GASLhrD,EAAS0oD,QAAQsC,EAAgB,MAG5BD,GACH5qD,EAAUgrD,cAAa,SAAC5rD,GACtB,IAAI6rD,EAAY7xD,EAAS4W,MAAM,IAAK,IACf,KAAjBi7C,EAAU,GACZxjD,EAAQxL,KAAK,cAAgBmD,GAE7BqI,EAAQxL,KAAK,IAAMgvD,EAAU,GAAK,IAAM7rD,MAM5C,gCACE,cAAC,GAAD,CACE8J,WA5Fa,SAACxI,GAClBuqB,GAAY1qB,IA4FRE,WAAYA,EACZ2I,cAAeA,EACfD,aAAcyhD,KAEdA,GACA,cAAC,EAAD,CACEvqD,iBAAiB,EACjBC,UAAWypD,EACXxpD,YAAaA,EACbE,WAAYA,EACZD,oBAAqBA,EACrB4I,cAAeA,IAGnB,cAAC,GAAD,CACE2gD,QAASA,EACTxpD,YAAaA,EACboqD,iBAAkBA,EAClBnqD,oBAAqBA,EACrB4I,cAAeA,QA7CZ,cAACpC,EAAA,EAAD,CAAQzF,QAAM,KA2DV2pD,OARf,YAA8C,IAA/BT,EAA8B,EAA9BA,QAASV,EAAqB,EAArBA,QACtB,OACE,cAAC,IAAD,UACE,cAAC,GAAD,CAAWU,QAASA,EAASV,QAASA,OCjH7BoB,I,OAnCK,WAAO,IACjBC,EAAsBzyD,cAAtByyD,kBAER,OACE,qBAAKzxD,UAAU,mCAAf,SACE,cAAC+iB,GAAA,EAAD,CAAM/iB,UAAU,sCAAhB,SACE,cAAC+iB,GAAA,EAAKjK,IAAN,UACE,eAACiK,GAAA,EAAKE,OAAN,CAAaD,cAAc,SAA3B,UACE,sBAAKhjB,UAAU,sCAAf,UACE,qBAAIA,UAAU,OAAd,UACE,qBAAKwQ,IAAI,4BAA4BnJ,MAAO,EAAGuW,IAAI,aAAa5d,UAAU,SAD5E,qBAIA,cAACuS,GAAA,EAAD,CAAQvS,UAAU,0BAA0BV,QAAS,kBAAMmyD,KAAqBnjD,OAAK,EAACzK,KAAK,QAA3F,SACE,sBAAM7D,UAAU,YAAhB,wBAGJ,qBAAKA,UAAU,aAAf,SACE,qBACEwQ,IAAI,4BACJoN,IAAI,mBACJ5d,UAAU,OACVqH,MAAO,QAGX,sBAAKrH,UAAU,wBAAf,cACMgI,wBCOH0pD,GAzBC7jD,aAAS,YAAgC,IAA7BijD,EAA4B,EAA5BA,QAA4B,EACtBvqD,IAAxBL,EAD8C,EAC9CA,SAAUC,EADoC,EACpCA,UADoC,EAEiCnH,cAA/EmB,EAF8C,EAE9CA,KAAMwxD,EAFwC,EAExCA,UAAWC,EAF6B,EAE7BA,gBAAiB/wD,EAFY,EAEZA,uBAAwBgxD,EAFZ,EAEYA,iBAFZ,EAGxBvgD,oBAAkB,GAHM,mBAG/C8+C,EAH+C,KAGtC0B,EAHsC,KAIhDC,EAAkCF,IAYxC,OAXAn0C,qBAAU,WACRvX,EAAU6rD,iBAAiBnxD,GAE3BkxD,EAAcppD,MAAK,SAACN,GACdA,QAAgE3C,IAAvD2C,EAAM,8CACjBypD,EAAWzpD,EAAM,8CAEnBnC,EAAS0oD,QAAQ,KAAMzuD,QAExB,CAAC4xD,EAAeD,EAAY3xD,EAAM+F,EAAUC,EAAWtF,KAErDiwD,GAAWa,EACP,cAACtkD,EAAA,EAAD,CAAQzF,QAAM,IACZgqD,EACF,cAAC,GAAD,CAAKd,QAASA,EAASV,QAASA,IAEhC,cAAC,GAAD,OCpBI6B,I,OAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqBxpD,MAAK,YAAkD,IAA/CypD,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,QCCRO,IAAcC,EAKZC,GAAsBD,8WAAA,+BAAgD,GAE5EE,IAAQC,WAAWF,GAAqB,CACtCG,UAAW,CACTC,oBAAqB,OAGzBH,IAAQI,SAASxzD,OAAOC,SAASmQ,SAAWpQ,OAAOC,SAASwzD,QAE5DC,IAAS56B,OACP,cAAC,IAAD,CACE66B,SAdoBT,mCAepBlzC,OAdiBkzC,wBAejBU,YAAa5zD,OAAOC,SAASC,OAC7B2zD,SAfmBX,4BAgBnBY,MAAM,oBALR,SAOE,cAAC,IAAMC,WAAP,UACE,cAAC,GAAD,CAASzC,QAAS2B,SAGtB7wC,SAASgV,eAAe,SAc5Bq7B,O","file":"static/js/main.179dca70.chunk.js","sourcesContent":["import { IdToken } from '@auth0/auth0-react';\nimport { ReactComponentLike } from 'prop-types';\nimport { SemanticICONS } from 'semantic-ui-react';\n\n//#endregion\nexport const TILT_SENSOR_TYPE = 'tilt';\nexport const SALINITY_SENSOR_TYPE = 'salinity';\nexport const OXYGEN_SENSOR_TYPE = 'oxygen';\nexport const TURBIDITY_SENSOR_TYPE = 'turbidity';\n\n//NodeTypes\nexport const SITE_NODE_TYPE = 'Site';\nexport const CAGE_NODE_TYPE = 'Cage';\nexport const SENSOR_NODE_TYPE = 'Sensor';\nexport const ALARM_NODE_TYPE = 'Alarm';\nexport const SENSOR_LOCATION_NODE_TYPE = 'SensorLocation';\nexport const FEEDING_BARGE_NODE_TYPE = 'FeedingBarge';\n\n//CageMetaTypes\nexport const STANDARD_CAGE_TYPE = 'standard';\n\n//SensorLocationTypes\nexport const LICE_SKIRT = 'lice_skirt';\nexport const SINKER_TUBE = 'sinker_tube';\n\n//MeasurementTypes\nexport const TEMPERATURE_MEASUREMENT_TYPE = 'temperature';\nexport const TILT_MEASUREMENT_TYPE = 'pitch';\nexport const DEPTH_MEASUREMENT_TYPE = 'depth';\nexport const TURBIDITY_MEASUREMENT_TYPE = 'turbidity';\nexport const SALINITY_MEASUREMENT_TYPE = 'salinity';\nexport const OXYGEN_MEASUREMENT_TYPE = 'oxygen';\n\n// Interfaces related to login and user account\nexport interface localUserInterface {\n node_key: string;\n node_kind: string;\n auth0_user_id: string;\n first_time_setup_complete: boolean | null;\n}\n\nexport interface userInterface {\n auth0: IdToken | null;\n local: localUserInterface;\n}\n\n// Interfaces related to Welcome screen\nexport interface stepInterface {\n icon: SemanticICONS;\n heading: string;\n completed: Number;\n component: ReactComponentLike;\n}\n\n// Interfaces related to login and user account\nexport interface localUserInterface {\n node_key: string;\n node_kind: string;\n auth0_user_id: string;\n first_time_setup_complete: boolean | null;\n}\n\nexport interface userInterface {\n auth0: IdToken | null;\n local: localUserInterface;\n}\n\n// Interfaces related to Welcome screen\nexport interface stepInterface {\n icon: SemanticICONS;\n heading: string;\n completed: Number;\n component: ReactComponentLike;\n}\n\nexport interface SensorMetaData {\n sensor_id: number;\n sensor_type: string;\n name: string;\n node_key: string;\n node_kind: string;\n}\n\nexport interface SensorPackage {\n type: string;\n path: string;\n}\n\nexport type SensorData = {\n ts: string; // Timestamp\n sensor_id: number; // Sensor ID\n receivers: ReceiverProps[];\n packet_counter: number;\n is_valid: boolean;\n bit_error_rate: number;\n battery: number;\n sensor_type: string;\n};\n\nexport interface TiltSensorData extends SensorData {\n sensor_type: 'tilt';\n pressure: number;\n pitch: number;\n depth: number;\n}\n\nexport interface OxygenSensorData extends SensorData {\n sensor_type: 'oxygen';\n oxygen: number;\n temperature: number;\n}\n\nexport interface SensorReport {\n report: TiltSensorData | TurbiditySensorData | OxygenSensorData | SalineSensorData;\n meta: SensorMetaData | undefined;\n key?: string;\n}\n\nexport interface TurbiditySensorData extends SensorData {\n sensor_type: 'turbidity';\n turbidity: number;\n temperature: number;\n}\n\nexport interface SalineSensorData extends SensorData {\n sensor_type: 'salinity';\n salinity: number;\n temperature: number;\n conductivity: number;\n resistance: number;\n}\n\nexport interface CombinedTurbiditySensorData {\n report: TurbiditySensorData;\n meta: SensorMetaData;\n}\n\nexport interface ReceiverProps {\n id: number;\n multipaths: number;\n nsd: number;\n rssi: number;\n}\n\nexport interface DiagnosticData {\n x_scale: number;\n y_scale: number;\n x_offset: number;\n y_offset: number;\n data: number[][];\n}\n\n//#region Rig Setup\n\nexport interface SiteContents {\n cages: CageContents[];\n node_key: string;\n node_kind: string;\n camera: Camera;\n feeding_barge: Feeding_Barge;\n name: string;\n topside_id: string;\n}\n\nexport interface Camera {\n position: number[];\n}\n\nexport interface Feeding_Barge {\n latitude: number;\n longitude: number;\n node_key: string;\n node_kind: string;\n rotation: number;\n position: number[];\n}\n\nexport interface CageContents {\n index?: number;\n node_key: string;\n node_kind: string;\n name: string;\n selected?: boolean;\n position: [number, number, number];\n meta: CageContentsMeta;\n sensor_locations: SensorLocationContents[];\n}\n\nexport interface CageContentsMeta {\n type: string;\n circumference: number;\n}\n\nexport interface SensorLocationContents {\n name: string;\n node_key: string;\n node_kind: string;\n scenarios: AlarmContents[];\n sensors: SensorContents[];\n status: StatusInfo;\n selected?: boolean;\n meta: SensorLocationMeta;\n scenario_status: ScenarioStatus[];\n}\n\nexport interface SensorLocationMeta {\n min_depth: number;\n max_depth: number;\n left_border: number;\n right_border: number;\n type: string;\n}\n\nexport interface AlarmContents {\n node_key: string;\n node_kind: string;\n name: string;\n description: string;\n trigger: TriggerContents;\n}\n\nexport interface TriggerContents {\n trigger_type: string;\n trigger_action: string;\n measurements: string;\n warning_trigger_distance: number;\n warning_point: number;\n critical_point: number;\n baseline_point: number;\n}\n\nexport interface Trigger {\n trigger_point: number;\n}\n\nexport interface ScenarioSeverity {\n description: string;\n level: 2;\n}\n\nexport interface SensorContents {\n node_key: string;\n node_kind: string;\n sensor_id: number;\n sensor_type: string;\n name: string;\n selected?: boolean;\n}\n\nexport interface BatteryContents {\n description: string;\n level: number;\n}\n\nexport interface SlScenarioStatus {\n sl_key: string;\n alarm_status: ScenarioStatus[];\n}\n\nexport interface ScenarioStatus {\n name: string;\n node_key: string;\n description: string;\n severity: StatusInfo;\n trigger_distance: number;\n date: Date;\n measurements: MeasurementPair[];\n dismissed: boolean;\n prev_trigger_distance: number;\n min_trigger_distance: number;\n max_trigger_distance: number;\n}\n\nexport interface MeasurementPair {\n type: string;\n measurement: number;\n}\n\nexport interface Statuses {\n oxygen: StatusInfo;\n salinity: StatusInfo;\n temperature: StatusInfo;\n turbidity: StatusInfo;\n}\n\nexport interface StatusInfo {\n description: string;\n level: number;\n time: Date;\n}\n\n//#endregion\n\n//#region Site Status\n\nexport interface SiteStatus {\n rig_key: string;\n cage_statuses: CageStatus[];\n}\n\nexport interface CageStatus {\n cage_key: string;\n sl_statuses: sLocStatus[];\n}\n\nexport interface sLocStatus {\n meta: SensorLocationMeta;\n sl_key: string;\n status: SimpleStatus;\n}\n\nexport interface SimpleStatus {\n description: string;\n level: number;\n}\n\n//#endregion\n\n//#region Dashboard Map\n\nexport enum MapCageView {\n OXYGEN = 'Oxygen',\n TEMPERATURE = 'Temperature',\n SALINITY = 'Salinity',\n TURBIDITY = 'Turbidity',\n TILT = 'Tilt',\n INACTIVE = 'Inactive',\n}\n\n//#endregion\n\n//#region Scenario setup\n\nexport interface ScenarioElementProps {\n scenarioType: string;\n severityDescription: string;\n severityLevel: number;\n}\n\nexport interface ScenarioSLocProps {\n sensorLocationDepth: number;\n scenarios: ScenarioElementProps[];\n}\n\nexport interface ScenarioCageProps {\n cage: string;\n sLocProps: ScenarioSLocProps[];\n}\n\n//#endregion\n\n//#region Cage Graph helper interfaces\n\nexport interface SensorInspectProps {\n sensorType: string;\n sensorID: number;\n measurement: string;\n unit: string;\n time: number;\n}\n\nexport interface CageGraphProps {\n cageId: string;\n sampleSize: number;\n handleRouteChange?: ({ sensorType, sensorID, unit, time }: SensorInspectProps) => void;\n referenceLinePercentage: number;\n setMenuRightVisible: any;\n}\n\nexport interface CageAlarmProps {\n level: number;\n label: string;\n position: string;\n values: number[];\n warning: number;\n critical: number;\n measurements: MeasurementPair[];\n depth: number;\n description: string;\n setShadows?: () => void;\n alarm: AlarmContents | undefined;\n}\n\nexport interface CageProps {\n cage: CageContents;\n}\n\nexport interface AlarmMeasurementProps {\n measurements: MeasurementPair[];\n}\n\n//#endregion\n\n//#region Cage Measurement History\n\nexport interface MeasurementContent {\n cage: CageContents;\n sensor_location_history: SensorLocationHistory[];\n}\n\nexport interface SensorLocationHistory {\n measurement_history: MeasurementHistory[];\n sensor_location: SensorLocationContents;\n}\n\nexport interface MeasurementHistory {\n measurement: { [measurementType: string]: number[] };\n measurement_type: string;\n sensor_id: number;\n sensor_type: string;\n}\n\nexport interface SelectedMeasurement {\n cageName: string;\n sensorName: string;\n id: number;\n key: string;\n locationDepth: number;\n measurement: string;\n type: string;\n color: string;\n stroke: string;\n samples: number;\n isSelected: boolean;\n}\n\nexport interface TimelineGraphProps {\n sensorId?: string;\n timeline: Timeline[];\n showLabels?: any;\n referenceLinePercentage?: number;\n hideXaxis?: boolean;\n dx?: number;\n sensors?: any;\n inverted: boolean;\n}\n\nexport interface Treshold {\n measurement: string;\n top?: number;\n bottom?: number;\n prefix: string;\n postfix: string;\n}\n\n//#endregion\n\n//#region\n\nexport interface SiteMeta {\n node_key: string;\n name: string;\n default: boolean;\n}\n\nexport interface Timeline {\n sensor_type: string;\n sensor_id: number;\n measurement_type: string;\n sensorName?: string;\n color: string | undefined;\n style: string;\n data: TimelineData[];\n}\n\nexport interface GraphColor {\n cssName: string;\n hex: string;\n inverseHex: string;\n}\n\nexport interface MeasurementProps {\n color: string;\n style: string;\n samples: number;\n}\n\nexport interface TimelineData {\n ts: number;\n value: number;\n}\n\nexport interface SiteToSensor {\n site: SiteContents;\n cage: CageContents;\n sl: SensorLocationContents;\n sensor: SensorContents;\n measurements: string[];\n selected: boolean;\n color: string;\n}\n\nexport interface Organization {\n node_key: string;\n name: string;\n org_id: string;\n}\n\nexport interface OrganizationAndSites {\n organization: Organization;\n sites: SiteContents[];\n}\n\nexport interface SensorListItem {\n sensor_id: number;\n sensor: SensorContents | undefined;\n sensor_location: SensorLocationContents | undefined;\n last_message: TiltSensorData | TurbiditySensorData | OxygenSensorData | SalineSensorData | undefined;\n}\n\nexport interface LocationOption {\n key: string;\n value: string;\n text: string;\n meta: SensorLocationMeta;\n}\n\nexport interface TopsideStatusContents {\n cloud: StatusContents;\n barometer: StatusContents;\n receivers: StatusContents;\n time_sync: StatusContents;\n sensors: StatusContents;\n}\n\nexport interface StatusContents {\n status: boolean;\n message: string;\n}\n\nexport interface ReceiversStatusContents {\n status: boolean;\n message: string;\n receivers: boolean[];\n}\n\nexport interface ScanResultContents {\n is_scanning: boolean;\n result: SensorDeviceContents[];\n}\n\nexport interface SensorDeviceContents {\n sensor_type: string;\n serial_number: number;\n in_storage: boolean;\n mac: string;\n is_fully_charged: boolean;\n}\n\nexport interface SensorSettingsContents {\n node_key: string;\n node_type: string;\n sensor_config: SensorConfigContents;\n}\n\nexport interface SensorConfigContents {\n name: string;\n info: string;\n device_config: DeviceConfigContents;\n smart_config: SmartConfigcontents[];\n}\n\nexport interface DeviceConfigContents {\n measurement_period: number;\n diagnostic_period: number;\n transmit_block: number;\n transmit_period: number;\n}\n\nexport interface SmartConfigcontents {\n measurement: string;\n trigger_points: TriggerPointContents[];\n}\n\nexport interface TriggerPointContents {\n active: boolean;\n min: number;\n max: number;\n falling: number;\n rising: number;\n}\n","import { useAuth0 } from '@auth0/auth0-react';\nimport { Link } from 'react-router-dom';\nimport { Icon, Menu } from 'semantic-ui-react';\n\nconst LogoutButton = () => {\n const { logout } = useAuth0();\n\n const onClick = () => {\n try {\n logout({ returnTo: window.location.origin });\n } catch (e) {\n console.log('Failed!', e);\n }\n };\n\n return (\n \n Log out\n \n \n );\n};\n\nexport default LogoutButton;\n","import { runInAction, makeAutoObservable } from 'mobx';\nimport { createContext, useContext } from 'react';\nimport moment from 'moment';\n\nimport { localUserInterface, userInterface, SelectedMeasurement } from '../lib/types';\n\ninterface SiteInterface {\n default: boolean;\n name: string;\n node_key: string;\n topside_id: string;\n}\n//Contains params related to the whole app\nexport class AppStore {\n private breadcrumb: string = '';\n private user: userInterface = {\n auth0: null,\n local: {\n node_key: '',\n node_kind: '',\n auth0_user_id: '',\n first_time_setup_complete: null,\n },\n };\n\n constructor() {\n makeAutoObservable(this);\n }\n\n setBreadcrumb(breadcrumb: string) {\n if (this.breadcrumb !== breadcrumb) {\n this.breadcrumb = breadcrumb;\n }\n }\n\n getBreadcrumb() {\n return this.breadcrumb;\n }\n\n /**\n * Sets the user object with data based on where we got the information from\n *\n * @param {localUserInterface} local - Info about the user stored in _our_ database\n * @param {object|null} auth0 - Info about the user stored at Auth0\n * @returns {void}\n */\n setUser(local?: localUserInterface | null, auth0?: any | null): void {\n if (local) {\n this.user.local = local;\n }\n if (auth0) {\n this.user.auth0 = auth0;\n }\n }\n /**\n * Retrieves info about the logged in user\n *\n * @returns {userInterface}\n */\n getUser(): userInterface {\n return this.user;\n }\n}\n\nexport class AuthStore {\n private getAccessTokenSilently: () => Promise;\n private user: Object | undefined;\n\n constructor() {\n makeAutoObservable(this);\n this.getAccessTokenSilently = () =>\n Promise.resolve('Token token')\n }\n\n setTokenFunction(getAccessTokenSilently: () => Promise) {\n this.getAccessTokenSilently = getAccessTokenSilently;\n }\n\n getTokenFunction() {\n return this.getAccessTokenSilently;\n }\n}\n\nexport class AnalyticsStore {\n // Set default preset in case the user have none\n private viewData: ViewDetailsInterface = {\n node_key: null,\n name: 'Default view',\n graph_settings: {\n live: true,\n grouped_graphs: false,\n data_points: 100,\n date_from: moment(new Date()).startOf('day').subtract(new Date().getTimezoneOffset(), 'minute').unix(),\n date_to: moment(new Date()).endOf('day').subtract(new Date().getTimezoneOffset(), 'minute').unix(),\n graph_size: 'medium',\n },\n sensors: [],\n }\n\n constructor() {\n makeAutoObservable(this);\n }\n\n setViewData(preset: ViewDetailsInterface) {\n this.viewData = preset\n }\n\n getViewData() {\n return this.viewData;\n }\n\n /**\n * Groups all selected sensors by type of measurement, so i.e all oxygen\n * measurements are placed in their respective grouped list.\n * @param sensors - List of sensors currently selected\n * @returns array - Array of all selected sensors grouped by type of measurement. I.e all selected sensors with depth measurement are placed in their own sub-array\n */\n getSensorsGroupedByMeasurementType = () => {\n let grouped: any = {};\n if (this.viewData?.sensors?.length) {\n this.viewData?.sensors.forEach((e: any) => {\n // There exists some items in the measurement list for this selected measurement, so add this one to the list\n if (grouped[e.measurement_type]?.length) {\n return grouped[e.measurement_type].push(e);\n } else {\n // There are no items in the measurement list for this selected measurement, so create a new array and add the item to that\n return grouped[e.measurement_type] = [e];\n }\n })\n }\n return grouped\n };\n\n setViewDataName(name: string) {\n runInAction(() => {\n this.viewData.name = JSON.parse(JSON.stringify(name))\n })\n }\n\n toggleSensor(sensor: any, measurementType: string, checked: boolean | undefined, sensorLocationMeta?: any, locationName?: string) {\n runInAction(() => {\n // Add the sensor to the list, if it doesn't already is there\n const sensorIndex = this.isSensorAndMeasurementSelected(sensor.sensor_id, sensor.sensor_type, measurementType);\n if (checked === true) {\n if (sensorIndex < 0) {\n const newSensorObject = {\n node_key: sensor.node_key,\n sensor_type: sensor.sensor_type,\n sensor_id: sensor.sensor_id,\n measurement_type: measurementType,\n name: sensor.name,\n sensor_location_meta: sensorLocationMeta || [],\n cage_name: locationName || 'N/A'\n };\n this.viewData.sensors.push(newSensorObject);\n }\n } else {\n if (sensorIndex > -1) {\n // Remove 1 element at the sensor index location\n this.viewData.sensors.splice(sensorIndex, 1);\n }\n }\n })\n }\n\n isSensorAndMeasurementSelected(sensorId: number, sensorType: string, measurementType: string) {\n // Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\n return this.viewData?.sensors?.findIndex((e: any) => e.sensor_id === sensorId && e.sensor_type === sensorType && e.measurement_type === measurementType);\n }\n\n isSensorSelected(sensorId: number) {\n // Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\n return this.viewData?.sensors?.findIndex((e: any) => e.sensor_id === sensorId);\n }\n\n setDateFrom(timestamp: number) {\n this.viewData.graph_settings.date_from = timestamp;\n }\n\n setDateTo(timestamp: number) {\n this.viewData.graph_settings.date_to = timestamp;\n }\n\n setGraphSize(size: string) {\n this.viewData.graph_settings.graph_size = size;\n }\n\n setDataPoints(points: number) {\n runInAction(() => {\n this.viewData.graph_settings.data_points = points;\n });\n }\n\n toggleLiveData() {\n this.viewData.graph_settings.live = !this.viewData.graph_settings.live;\n }\n\n setSelectedSensors(sensors: Array) {\n runInAction(() => {\n this.viewData.sensors = sensors;\n });\n }\n\n getSelectedSensors() {\n return this.viewData.sensors;\n }\n\n setLiveData(live: boolean) {\n this.viewData.graph_settings.live = live;\n }\n\n getLiveData() {\n return this.viewData.graph_settings.live;\n }\n\n toggleDisplayGroupedGraph() {\n this.viewData.graph_settings.grouped_graphs = !this.viewData.graph_settings.grouped_graphs;\n }\n\n // Local storage methods\n getDarkMode() {\n let value = localStorage.getItem('cagesense-darkmode')\n if (value !== null) {\n return JSON.parse(value)\n } else {\n return false\n }\n }\n\n toggleDarkMode() {\n const key = 'cagesense-darkmode'\n let darkMode = localStorage.getItem(key)\n let updatedValue = false\n\n if (darkMode !== null) {\n darkMode = JSON.parse(darkMode)\n updatedValue = !darkMode\n }\n localStorage.setItem(key, JSON.stringify(updatedValue))\n // More info: https://michalkotowski.pl/how-to-refresh-a-react-component-when-local-storage-has-changed/\n window.dispatchEvent(new Event('storage'))\n }\n\n getGraphGrid() {\n let value = localStorage.getItem('cagesense-graph-grid')\n if (value !== null) {\n return JSON.parse(value)\n } else {\n return false\n }\n }\n\n toggleGraphGrid() {\n const key = 'cagesense-graph-grid'\n let grid = localStorage.getItem(key)\n let updatedValue = false\n\n if (grid !== null) {\n grid = JSON.parse(grid)\n updatedValue = !grid\n }\n localStorage.setItem(key, JSON.stringify(updatedValue))\n // More info: https://michalkotowski.pl/how-to-refresh-a-react-component-when-local-storage-has-changed/\n window.dispatchEvent(new Event('storage'))\n }\n}\n\nexport class SetupStore {\n private currentStep = 0;\n private setupStarted = false;\n private activeGatewayId: string | null = null;\n private steps = [\n { completed: false },\n { completed: false },\n { completed: false },\n { completed: false },\n { completed: false },\n { completed: false },\n ];\n\n constructor() {\n makeAutoObservable(this);\n }\n\n getSetupStarted() {\n return this.setupStarted;\n }\n\n setSetupStarted(val: boolean) {\n this.setupStarted = val;\n }\n\n getCurrentStep(): number {\n return this.currentStep;\n }\n\n setCurrentStep(index: number) {\n this.currentStep = index;\n }\n\n getCurrentStepStatus() {\n return this.steps[this.getCurrentStep()].completed;\n }\n\n setActiveGatewayId(id: string) {\n this.activeGatewayId = id;\n }\n\n getActiveGatewayId() {\n return this.activeGatewayId;\n }\n\n navigate(direction: string) {\n switch (direction) {\n case 'next':\n // Ensure the next step isn't going out of boundary and only update progress when we're moving forwards.\n if (this.currentStep in this.steps) {\n this.setStepComplete(this.currentStep);\n this.currentStep++;\n }\n break;\n case 'prev':\n // Decrease and ensure the previous step isn't negative\n if (!(this.currentStep-- in this.steps) || this.currentStep < 0) {\n // Increase the step counter up one\n this.currentStep++;\n }\n break;\n default:\n throw new Error('Invalid direction provided. Must be either \"next\" or \"prev\".');\n }\n }\n /**\n * Completes a specific step by setting the provided step index to true\n * @param stepIndex number - The step index which to set as completed\n */\n setStepComplete(stepIndex: number) {\n // Ensure the step actually exists\n if (stepIndex in this.steps) {\n this.steps[stepIndex].completed = true;\n } else {\n throw new Error(`The step ${stepIndex} doesn't exist in the setup steps.`);\n }\n }\n\n setStepIncomplete(stepIndex: number) {\n // Ensure the step actually exists\n if (stepIndex in this.steps) {\n this.steps[stepIndex].completed = false;\n } else {\n throw new Error(`The step ${stepIndex} doesn't exist in the setup steps.`);\n }\n }\n /**\n * Returns whether all steps have been completed or not\n * @returns boolean\n */\n allStepsCompleted() {\n return this.steps.every((e) => e.completed === true);\n }\n /**\n * Retrieves all steps in the setup wizard\n * @returns Array\n */\n getSteps() {\n return this.steps;\n }\n /**\n * Retrieves a specific step in the setup wizard\n * @param stepIndex number - The step index which to retrieve\n * @returns Object\n */\n getStep(stepIndex: number) {\n // Ensure the step actually exists\n if (stepIndex in this.steps) {\n return this.steps[stepIndex];\n } else {\n throw new Error(`The step ${stepIndex} doesn't exist in the setup steps.`);\n }\n }\n}\n\nexport class SiteStore {\n private siteKey: string | undefined = undefined;\n private activeSiteKey: string | undefined = undefined;\n private updateUrl: (s: string) => void = () => {\n return;\n };\n\n private sites: Array = [];\n private fetchSiteFromLocation: () => string = () => {\n return 'local';\n };\n constructor() {\n makeAutoObservable(this);\n }\n\n /**\n * Sets the active site key\n * @param siteKey Site identifier (usually in hex)\n */\n setActiveSiteKey(siteKey: string) {\n this.activeSiteKey = siteKey;\n }\n\n /**\n * Retrieves the active site key\n * @return {string|undefined}\n */\n getActiveSiteKey(): string | undefined {\n return this.activeSiteKey;\n }\n\n /**\n * Sets the update url\n * @param updateUrl the url to update\n */\n setUpdateUrl(updateUrl: (s: string) => void) {\n this.updateUrl = updateUrl;\n }\n\n setFetchSiteFromLocation(getSite: () => string) {\n this.fetchSiteFromLocation = getSite;\n }\n\n /**\n * Sets the current site key\n * @param siteKey\n */\n setSiteKey(siteKey: string) {\n this.siteKey = siteKey;\n if (this.updateUrl !== undefined) {\n this.updateUrl(this.siteKey);\n }\n }\n\n /**\n * Retrieves the current site key\n * @returns string\n */\n getSiteKey() {\n if (this.siteKey === undefined) {\n return this.fetchSiteFromLocation();\n }\n return this.siteKey;\n }\n\n /**\n * Sets all the sites the user has on their account\n * @param sites Array of sites\n */\n setSites(sites: Array) {\n this.sites = sites;\n }\n\n /**\n * Retrieves all sites the user has on their account\n * @returns Array\n */\n getSites() {\n return this.sites;\n }\n}\n\ninterface ViewDetailsInterface {\n node_key: string | null;\n name: string;\n sensors: Array;\n graph_settings: {\n live: boolean;\n grouped_graphs: boolean;\n data_points: number;\n date_from: any;\n date_to: any;\n graph_size: string;\n };\n}\n\nconst storeContext = createContext({\n appStore: new AppStore(),\n authStore: new AuthStore(),\n firstTimeSetupStore: new SetupStore(),\n siteStore: new SiteStore(),\n analyticsStore: new AnalyticsStore(),\n});\n\nconst useStore = () => useContext(storeContext);\n\nexport default useStore;\n","import { Link } from 'react-router-dom';\nimport { Sidebar, Menu, Divider, Icon } from 'semantic-ui-react';\nimport LogoutButton from './Components/LogoutButton';\nimport useStore from './Store/Store';\nimport { version } from '../package.json'\n\ninterface SidebarMenuProps {\n showLoginLogout: boolean;\n showAdmin: boolean;\n menuVisible: boolean;\n breadCrumb: string;\n setBreadCrumb: any;\n setMenuRightVisible: any;\n}\n\nconst SidebarMenu = ({\n showLoginLogout,\n showAdmin,\n menuVisible,\n breadCrumb,\n setMenuRightVisible,\n}: SidebarMenuProps) => {\n const { appStore, siteStore } = useStore();\n const onClick = (event: React.MouseEvent) => {\n setMenuRightVisible(false);\n appStore.setBreadcrumb((event.target as HTMLInputElement).innerText)\n };\n return (\n \n {/* Sidebar logic for everything else */}\n \n Overview Map\n \n \n \n My Site\n \n \n {showAdmin && (\n \n Site Edit\n \n \n )}\n \n Analytics\n \n \n \n {showAdmin && (\n \n Admin\n \n \n )}\n {\n /*Disabled since it does not work for 2.0.0*/ false && showAdmin && (\n \n Sensor Config\n \n )\n }\n {showAdmin && (\n \n Diagnostics\n \n \n )}\n \n First time setup\n \n \n \n Help\n \n \n \n About\n \n \n \n Privacy Policy\n \n \n {showLoginLogout && }\n
\n v{version}\n
\n \n );\n};\n\nexport default SidebarMenu;\n","export default __webpack_public_path__ + \"static/media/waterlinked-logo.d373ac60.png\";","import fetch from 'unfetch';\nimport { SiteContents, SlScenarioStatus } from './types';\n\ninterface fetchProps {\n method?: string;\n headers?: HeadersInit;\n body?: object | string;\n token?: string;\n scope?: string;\n raw?: boolean;\n}\n\n/**\n * Fetches details about a site, identified by siteId\n * @param siteId - string id for the site in question\n * @returns JSON | Promise rejection\n */\nconst SiteDetailsFetcher = async (siteId: string, auth: any) => {\n const token = await auth.getAccessTokenSilently();\n const url = `/api/v1/site/${siteId}`\n const response = fetch(\n url,\n {\n headers: {\n Authorization: `Bearer ${token}`\n }\n }\n )\n .then(res => {\n if (res.ok) {\n return res.json()\n } else {\n const error = new Error(res.statusText)\n return Promise.reject(error)\n }\n })\n .then(data => data)\n return response\n}\n\n/**\n * Retrieves all analytic views for the current user\n * @param auth Auth instance\n * @returns Array - list of presets with details for each one\n */\nconst GetAnalyticViews = async (auth: any) => {\n const token = await auth.getAccessTokenSilently();\n const url = `/api/v1/analytics/views`\n const response = fetch(\n url,\n {\n headers: {\n Authorization: `Bearer ${token}`\n }\n }\n )\n .then(res => {\n if (res.ok) {\n return res.json()\n } else {\n const error = new Error(res.statusText)\n return Promise.reject(error)\n }\n })\n .then(data => data)\n return response\n}\n\n/**\n * Saves the currently active view/preset for the current user\n * @param auth Auth instance\n * @returns Array - list of presets with details for each one\n */\nconst SaveAnalyticView = async (viewData: any, auth: any) => {\n const token = await auth.getAccessTokenSilently();\n let method = 'POST'\n let url = `/api/v1/analytics/views`\n /*\n * A fair assumption: If the ID is set, we'll update via PUT.\n * Otherwise use POST to create a new view.\n */\n if (viewData?.node_key && viewData?.node_key !== null) {\n url = `/api/v1/analytics/views/${viewData.node_key}`\n method = 'PUT'\n }\n const response = fetch(\n url,\n {\n method: method,\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(viewData)\n }\n )\n .then(res => {\n if (res.ok) {\n return res.json()\n } else {\n const error = new Error(res.statusText)\n return Promise.reject(error)\n }\n })\n .then(data => data)\n return response\n}\n\n/**\n * Deletes the currently active view/preset for the current user\n * @param auth Auth instance\n * @returns void - 204 response code if delete was successful\n */\nconst DeleteAnalyticView = async (viewData: any, auth: any) => {\n const token = await auth.getAccessTokenSilently();\n let method = 'DELETE'\n let url = `/api/v1/analytics/views/${viewData?.node_key}`\n const response = fetch(\n url,\n {\n method: method,\n headers: {\n Authorization: `Bearer ${token}`\n }\n }\n )\n .then(res => {\n if (res.ok) {\n return res.ok\n } else {\n const error = new Error(res.statusText)\n return Promise.reject(error)\n }\n })\n .then(data => data)\n return response\n}\n\nconst SensorDetailsFetcher = async (siteId: string, auth: any) => {\n const token = await auth.getAccessTokenSilently();\n const url = `/api/v1/sensor/site/${siteId}`\n const response = fetch(\n url,\n {\n headers: {\n Authorization: `Bearer ${token}`\n }\n }\n )\n .then(res => {\n if (res.ok) {\n return res.json()\n } else {\n const error = new Error(res.statusText)\n return Promise.reject(error)\n }\n })\n .then(data => data)\n return response\n}\n\nconst TimelineDataFetcher = async (params: any) => {\n fetch(params.url)\n .then(async (res) => {\n if (res.ok) {\n return await res.json()\n } else {\n const error = new Error(res.statusText)\n return Promise.reject(error)\n }\n })\n}\n\nconst AuthFetcher = async (url: string, getAccessTokenSilently: () => Promise, props?: fetchProps) => {\n const options: any = {\n method: props?.method || 'GET',\n headers: props?.headers || { Accept: 'application/json', 'Content-Type': 'application/json' },\n };\n\n if (props?.body) {\n if (options.headers['Content-Type'] === 'application/json') {\n options.body = JSON.stringify(props.body);\n }\n }\n\n if (!url) {\n return null;\n }\n try {\n let token = await getAccessTokenSilently();\n options.headers.Authorization = `Bearer ` + token;\n } catch (err) {\n console.log('unable to fetch auth token');\n throw err;\n }\n\n const response = await fetch(url, options);\n\n if (props?.raw) {\n // Want full control over the response\n return response;\n }\n\n if (!response.ok) {\n console.log(`The request to ${url} failed. Status code: ${response.status}`);\n throw new Error('An error occurred while fetching the data. Cause: ' + response.status);\n }\n const contentType = response.headers.get('content-type') || '';\n if (contentType.indexOf('json') > -1 || url.indexOf('spectrum') > -1) {\n return response.json();\n } else {\n return response.blob();\n }\n};\n\nconst SlAlarmStatusesHandler = function (fetched: Promise | null): Promise | undefined {\n return fetched?.then((value: any) => {\n const ScenarioStatus: SlScenarioStatus[] = value;\n return ScenarioStatus;\n });\n};\n\nconst SiteHandler = function (fetched: Promise | null): Promise | undefined {\n return fetched?.then((value: any) => {\n const siteContents: SiteContents = value;\n return siteContents;\n });\n};\n\nexport {\n GetAnalyticViews,\n SaveAnalyticView,\n DeleteAnalyticView,\n AuthFetcher,\n TimelineDataFetcher,\n SiteHandler,\n SlAlarmStatusesHandler,\n SiteDetailsFetcher,\n SensorDetailsFetcher\n};\n","import {\n DEPTH_MEASUREMENT_TYPE,\n OXYGEN_MEASUREMENT_TYPE,\n OXYGEN_SENSOR_TYPE,\n SALINITY_MEASUREMENT_TYPE,\n SALINITY_SENSOR_TYPE,\n SensorContents,\n SlScenarioStatus,\n TEMPERATURE_MEASUREMENT_TYPE,\n TILT_MEASUREMENT_TYPE,\n TILT_SENSOR_TYPE,\n TURBIDITY_MEASUREMENT_TYPE,\n TURBIDITY_SENSOR_TYPE,\n} from './types';\n\nconst findHighestAlarmStatus = (slAlarmStatus: SlScenarioStatus[]) => {\n if (!slAlarmStatus || !Array.isArray(slAlarmStatus)) {\n return -1;\n }\n var alarmStauses = slAlarmStatus.flatMap((slStatus) => slStatus.alarm_status).map((status) => status.severity.level);\n if (alarmStauses.length === 0) {\n return -1;\n }\n return alarmStauses.reduce((prev, current) => (prev > current ? prev : current));\n};\n\nconst findMeasurementsForSensor = (sensor: SensorContents) => {\n switch (sensor.sensor_type) {\n default:\n return [];\n case OXYGEN_SENSOR_TYPE:\n return [OXYGEN_MEASUREMENT_TYPE, TEMPERATURE_MEASUREMENT_TYPE];\n case TILT_SENSOR_TYPE:\n return [DEPTH_MEASUREMENT_TYPE, TILT_MEASUREMENT_TYPE];\n case TURBIDITY_SENSOR_TYPE:\n return [TURBIDITY_MEASUREMENT_TYPE, TEMPERATURE_MEASUREMENT_TYPE];\n case SALINITY_SENSOR_TYPE:\n return [SALINITY_MEASUREMENT_TYPE, TEMPERATURE_MEASUREMENT_TYPE];\n }\n};\n\n/**\n * Retrieve the (image) path of a sensor type.\n * @param type The type of sensor you want to retrieve\n * @returns string - The path to the sensor of specified type or a generic one if the type wasn't found\n */\nconst getSensorImagePath = (type: string) => {\n let validTypes = [\n TEMPERATURE_MEASUREMENT_TYPE,\n TILT_MEASUREMENT_TYPE,\n DEPTH_MEASUREMENT_TYPE,\n TURBIDITY_MEASUREMENT_TYPE,\n SALINITY_MEASUREMENT_TYPE,\n OXYGEN_MEASUREMENT_TYPE\n ]\n\n if (validTypes.includes(type)) {\n return `/images/sensor-${type}.svg`\n } else {\n return `/images/sensor-generic.svg`\n }\n}\n\nconst findSensorTypesFromMeasurements = (measurements: string[]) => {\n let sensorTypes: Set = new Set();\n for (let measurement of measurements) {\n if (measurement === OXYGEN_MEASUREMENT_TYPE) {\n sensorTypes.add(OXYGEN_SENSOR_TYPE);\n } else if (measurement === SALINITY_MEASUREMENT_TYPE) {\n sensorTypes.add(SALINITY_SENSOR_TYPE);\n } else if (measurement === DEPTH_MEASUREMENT_TYPE || measurement === DEPTH_MEASUREMENT_TYPE) {\n sensorTypes.add(TILT_SENSOR_TYPE);\n } else if (measurement === TURBIDITY_MEASUREMENT_TYPE) {\n sensorTypes.add(TURBIDITY_SENSOR_TYPE);\n } else if (measurement === TEMPERATURE_MEASUREMENT_TYPE) {\n sensorTypes.add(TURBIDITY_SENSOR_TYPE);\n sensorTypes.add(OXYGEN_SENSOR_TYPE);\n sensorTypes.add(SALINITY_SENSOR_TYPE);\n }\n }\n\n return Array.from(sensorTypes);\n};\n\nexport { \n findHighestAlarmStatus,\n findMeasurementsForSensor,\n findSensorTypesFromMeasurements,\n getSensorImagePath\n};\n","import React from 'react';\nimport { Notyf } from 'notyf';\n\nexport default React.createContext(\n new Notyf({\n duration: 3000,\n position: {\n x: 'center',\n y: 'bottom',\n },\n })\n);\n","import { observer } from 'mobx-react';\nimport { useHistory } from 'react-router-dom';\nimport { DropdownProps, Dropdown, Icon, Header, Loader } from 'semantic-ui-react';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { findHighestAlarmStatus } from '../../lib/functionality';\nimport NotyfContext from '../NotyfContext';\nimport useSWR from 'swr';\n\nimport useStore from '../../Store/Store';\nimport { useContext } from 'react';\n\ninterface DataSiteObject {\n default: boolean;\n name: string;\n node_key: string;\n topside_id: string;\n}\ninterface SiteOptionsObject {\n key: string;\n text: string;\n value: string;\n content: any;\n}\n\nconst findCodeColorFromStatus = (status: number) => {\n switch (status) {\n case -1:\n return 'grey';\n case 0:\n return 'green';\n case 1:\n return 'yellow';\n case 2:\n return 'red';\n default:\n return 'grey';\n }\n};\n\nconst findStatusCodeFromStatus = (status: number) => {\n switch (status) {\n case 0:\n return 'OK';\n case 1:\n return 'Alarm: Warning';\n case 2:\n return 'Alarm: Critical';\n default:\n return '';\n }\n};\n\ninterface SiteOptionProps {\n site: DataSiteObject;\n}\nconst SiteOption = ({ site }: SiteOptionProps) => {\n const notyf = useContext(NotyfContext);\n const { authStore } = useStore();\n const { data: slAlarmStatuses, error } = useSWR(\n '/api/v1/alarm/site/' + site.node_key,\n (url) => AuthFetcher(url, authStore.getTokenFunction()),\n {}\n );\n const { data: siteStatus, error: siteStatusError } = useSWR(\n `/api/v1/status/${site.topside_id}`,\n (url) => AuthFetcher(url, authStore.getTokenFunction()),\n {}\n );\n\n if (error) {\n notyf.error(`Error while fetching alarms: ${error}`);\n }\n\n if (siteStatusError) {\n notyf.error(`Error while fetching site status: ${siteStatusError}`);\n }\n\n if (!slAlarmStatuses) {\n return ;\n }\n var highestAlarmValue = findHighestAlarmStatus(slAlarmStatuses);\n\n return (\n
\n \n {site.name + ' (' + site.topside_id + ')'}\n \n

\n Cloud\n {siteStatus ? (\n \n \n \n ) : (\n No data\n )}\n \n {error ? 'Error' : findStatusCodeFromStatus(highestAlarmValue)}\n \n

\n
\n
\n
\n );\n};\nconst SiteSelect = observer(() => {\n const history = useHistory();\n const { appStore, siteStore } = useStore();\n let siteOptions: SiteOptionsObject[] = [];\n const sites = siteStore.getSites() || [];\n if (!sites) {\n console.error('Unable to fetch sites');\n } else if (sites && sites.length) {\n // Go through each site and make them into items that can be used in a dropdown\n sites.forEach((site) => {\n siteOptions.push({\n key: site.node_key,\n text: site.name,\n value: site.node_key,\n content: ,\n });\n });\n }\n\n const onCurrentSiteChange = (e: React.SyntheticEvent, data: DropdownProps) => {\n const site = sites ? sites.find((site) => site.node_key === data.value) : undefined;\n\n if (site) {\n siteStore.setSiteKey(site.node_key);\n }\n };\n\n return (\n {\n appStore.setBreadcrumb('Overview Map')\n history.push('/')\n }}\n key='overview-map'\n className=\"m-0\"\n content={\n <>\n \n Overview Map\n \n }\n />\n )\n }\n ]}\n onChange={onCurrentSiteChange}\n trigger={\n
\n {sites.find((site) => site.node_key === siteStore.getSiteKey())?.name || 'Select site'}\n
\n }\n >\n \n );\n});\nexport default SiteSelect;\n","import { createMedia } from \"@artsy/fresnel\"\nimport { observer } from \"mobx-react\"\nimport { Link, useLocation } from \"react-router-dom\"\nimport { Sticky, Menu, Icon, Image, Header, Popup } from \"semantic-ui-react\"\nimport useStore from \"./Store/Store\"\nimport logo from './images/waterlinked-logo.png';\nimport SiteSelect from './Components/UIElements/SiteSelect';\n\ninterface TopMenuProps {\n toggleMenu: (event: React.MouseEvent) => void;\n displayIcon: any;\n breadCrumb: string;\n setBreadCrumb: any;\n}\nconst { MediaContextProvider, Media } = createMedia({\n breakpoints: {\n sm: 0,\n md: 600,\n },\n});\n\ninterface BreadCrumbProps {\n text: string;\n}\n\nconst BreadCrumb = ({ text }: BreadCrumbProps) => {\n return (\n <>\n {text && text !== 'CageSense' ? (\n <>\n |\n
\n {text}\n
\n \n ) : null}\n \n );\n};\n\nconst TopMenu = observer(({ toggleMenu, displayIcon, breadCrumb, setBreadCrumb }: TopMenuProps) => {\n const { appStore } = useStore();\n const location = useLocation()\n const displaySiteSelect = !location.pathname.startsWith('/welcome') && location.pathname !== '/'\n return (\n \n \n {displayIcon === true && (\n \n \n \n )}\n \n appStore.setBreadcrumb('Overview Map')} to=\"/\">\n CageSense ™\n \n \n \n \n {\n /* Display the site select if not on the overview or welcome screen as this would interfere with the interface/ux */\n displaySiteSelect &&\n \n }\n \n \n \n \n \n \n \n \n }\n content=\"Visit Waterlinked.com\"\n position=\"bottom center\"\n />\n \n \n \n \n \n )\n})\n\nexport default TopMenu;","import React from 'react';\n\ntype ErrorHandler = (error: Error, info: React.ErrorInfo) => void;\ntype ErrorHandlingComponent = (props: Props, error?: Error) => React.ReactNode;\n\ntype ErrorState = { error?: Error };\n\nexport default function Catch(\n component: ErrorHandlingComponent,\n errorHandler?: ErrorHandler\n): React.ComponentType {\n return class extends React.Component {\n state: ErrorState = {\n error: undefined,\n };\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n if (errorHandler) {\n errorHandler(error, info);\n }\n }\n\n render() {\n return component(this.props, this.state.error);\n }\n };\n}\n","import React from 'react';\nimport Catch from './Catch';\nimport { Message, Icon } from 'semantic-ui-react';\n\n// https://gist.github.com/andywer/800f3f25ce3698e8f8b5f1e79fed5c9c\n\ntype Props = {\n children: React.ReactNode;\n};\n\nconst ErrorBoundary = Catch(function MyErrorBoundary(props: Props, error?: Error) {\n if (error) {\n // You can render any custom fallback UI\n return (\n \n \n \n Woops\n

\n The component stopped working. If this failure happens again, please record the steps you have taken which\n triggered the failure and notify Water Linked with the details below.\n

\n
{error && error.toString()}
\n
\n
\n );\n } else {\n return {props.children};\n }\n});\n\nexport default ErrorBoundary;\n","import React, { useState } from 'react';\nimport { Popup, Button, Checkbox, Form } from 'semantic-ui-react';\nimport fetch from 'unfetch';\n\nconst FactoryResetButton = () => {\n const [isActive, setIsActive] = useState(false);\n const [isSuccess, setIsSuccess] = useState(false);\n const [isSubmitFail, setIsSubmitFail] = useState(false);\n // Form selection values\n const [isTimeSeries, setIsTimeSeries] = useState(true);\n const [isRelations, setIsRelations] = useState(true);\n\n const onClick = async () => {\n if (isActive) {\n console.log('in progress. ignoring');\n return;\n }\n setIsSubmitFail(false);\n setIsActive(true);\n\n const params = new URLSearchParams({\n ...(isTimeSeries && { timeseries: '1' }),\n ...(isRelations && { relations: '1' }),\n });\n\n const result = await fetch('/api/v1/about/factoryreset?' + params.toString(), {\n method: 'POST',\n });\n if (result.status !== 200) {\n const body = await result.text();\n console.log('Reset failed:', result.status, body);\n setIsSuccess(false);\n setIsSubmitFail(true);\n // Resetting\n setTimeout(() => {\n setIsSubmitFail(false);\n }, 1000);\n } else {\n setIsSuccess(true);\n setIsSubmitFail(false);\n }\n // Resetting\n setTimeout(() => {\n setIsActive(false);\n }, 1000);\n };\n\n return (\n \n Factory reset\n \n }\n onOpen={() => {\n setIsSubmitFail(false);\n setIsSuccess(false);\n }}\n content={\n
\n

Are you sure? Stored data will be lost.

\n

System will automatically reboot after button is pressed.

\n
\n \n {\n setIsTimeSeries(!isTimeSeries);\n }}\n />\n \n \n {\n setIsRelations(!isRelations);\n }}\n />\n \n \n \n {isSuccess && (\n

\n Success. System is now restarting. Please refresh window by clicking:\n {\n window.location.reload();\n }}\n content=\"Reload\"\n />\n

\n )}\n
\n }\n on=\"click\"\n position=\"right center\"\n />\n );\n};\n\nexport { FactoryResetButton };\n","import { observer } from 'mobx-react';\nimport { useState } from 'react';\nimport { Button } from 'semantic-ui-react'\nimport { AuthFetcher } from '../lib/fetch';\nimport useStore from '../Store/Store';\nimport './LEDButton.css'\n\nconst BlinkLED = (getAccessTokenSilently: () => Promise, siteKey: string) => {\n return AuthFetcher('/api/v1/about/led/' + siteKey, getAccessTokenSilently, { raw: true })\n .then((r) => r.ok)\n .catch((e) => {\n console.log('Error: ', e.toString());\n return false;\n });\n};\n\nfunction useLedBlink(getAccessTokenSilently: () => Promise, siteKey: string): [boolean, boolean, () => void] {\n const [isActive, setIsActive] = useState(false);\n const [isSubmitFail, setIsSubmitFail] = useState(false);\n const onClick = () => {\n if (isActive) {\n return;\n }\n setIsActive(true);\n setIsSubmitFail(false);\n BlinkLED(getAccessTokenSilently, siteKey).then((ok) => {\n if (ok) {\n console.log('led success');\n setTimeout(() => {\n setIsActive(false);\n }, 3000);\n } else {\n console.log('led fail');\n setIsSubmitFail(true);\n setIsActive(false);\n setTimeout(() => {\n setIsSubmitFail(false);\n }, 3000);\n }\n });\n };\n return [isActive, isSubmitFail, onClick];\n}\n\nconst LEDButton = observer(() => {\n const { authStore, siteStore } = useStore();\n const [isActive, isSubmitFail, onClick] = useLedBlink(authStore.getTokenFunction(), siteStore.getSiteKey());\n\n return (\n \n Flash Led\n \n );\n});\n\nexport { LEDButton, BlinkLED }\n","const releases = [\n {\n version: '2.1.3',\n changes: ['Add support for salinity sensor'],\n knownissues: [],\n },\n {\n version: '2.0.0',\n changes: ['Initial release'],\n knownissues: [],\n },\n /*\n {\n version: '1.4.1',\n changes: ['Bug fixes'],\n knownissues: [],\n },\n {\n version: '1.2.0',\n changes: ['Bug fixes'],\n knownissues: [],\n },\n {\n version: '1.1.1',\n changes: ['Bug fixes'],\n knownissues: [],\n },\n {\n version: '1.1.0',\n changes: ['Overview map', 'Site builder', 'Cloud run', 'Analytics', 'Sensorlist'],\n knownissues: [],\n },\n {\n version: '1.0.0 - Initial release',\n changes: ['Initial relase'],\n knownissues: [],\n },\n*/\n];\n\nexport default releases;\n","import { useState } from 'react';\nimport { Segment, Icon, Header } from 'semantic-ui-react';\nimport releases from './releases';\n\nconst ReleaseItemList = ({ items }: any) => (\n
    \n {items.map((d: any) => (\n
  • {d}
  • \n ))}\n
\n);\n\nfunction ReleaseNote(props: any) {\n const [expanded, setExpanded] = useState(false);\n\n const toggleExpanded = () => setExpanded(!expanded);\n\n const { version, changes, knownissues }: any = props;\n const icon = expanded ? 'angle double up' : 'angle double down';\n\n return (\n \n
\n Release {version} \n
\n\n {expanded && (\n
\n
Changes
\n \n\n {knownissues.length > 0 && (\n
\n
Known issues
\n \n
\n )}\n
\n )}\n
\n );\n}\n\nconst ReleaseNotes = () => (\n
\n {releases.map((d, i) => (\n \n ))}\n
\n);\n\nexport default ReleaseNotes;\n","import { observer } from 'mobx-react';\nimport React, { useMemo } from 'react';\nimport { Icon, Message, List, Label, Button, Popup } from 'semantic-ui-react';\nimport useSWR from 'swr';\n\nimport { AuthFetcher } from '../lib/fetch';\nimport useStore from '../Store/Store';\n\ninterface iconWithTitleProps {\n name: any;\n color: string;\n title: string;\n}\n\nconst IconWithTitle = ({ name, color, title }: iconWithTitleProps) => (\n \n } content={title} on={['hover', 'click']} />\n \n);\n\nconst colorOK = '#16a04f';\nconst colorWarn = '#eaae00';\n\nconst VersionOK = () => (\n \n);\n\ninterface VersionNeedsUpdateProps {\n url: string;\n version: string;\n}\n\nconst VersionNeedsUpdate = ({ url, version }: VersionNeedsUpdateProps) => (\n \n \n \n New version available ({version}){' '}\n {' '}\n \n \n \n \n);\n\nconst VersionLoadError = ({ error }: any) => (\n \n);\n\ninterface UpdateCheckProps {\n updateAvailable: boolean;\n latestRelease: string;\n latestReleaseURL: string;\n loading: boolean;\n error: string;\n}\n\nconst VersionStatusIconView = ({\n updateAvailable,\n latestRelease,\n loading,\n error,\n latestReleaseURL,\n}: UpdateCheckProps) => {\n if (loading) {\n return (\n \n \n \n );\n } else if (error) {\n return ;\n } else if (updateAvailable) {\n return ;\n }\n return ;\n};\n\ninterface VersionDetailProps {\n version: string;\n versionShort: string;\n chipid: string;\n updateURL: string;\n}\n\nconst VersionDetail = observer(({ version, versionShort, chipid, updateURL }: VersionDetailProps) => {\n const { authStore } = useStore();\n const latestURL = 'https://update.waterlinked.com/api/v1/latest';\n\n const config = useMemo(\n () => ({\n method: 'POST',\n body: { chipid: chipid, current: version },\n }),\n [version, chipid]\n );\n const {\n data: rData,\n error,\n isValidating,\n } = useSWR([latestURL, config], (url) => AuthFetcher(url, authStore.getTokenFunction()));\n\n return (\n \n \n \n Software version\n \n \n \n

\n \n \n \n \n \n );\n};\n\ninterface AboutPageProps {\n showKnowledge?: boolean;\n}\n\nconst About = observer(({ showKnowledge }: AboutPageProps) => {\n const { appStore } = useStore();\n appStore.setBreadcrumb('About');\n return (\n \n

WATER LINKED CAGESENSE

\n\n

Software

\n \n

Version information

\n \n\n

Browser compatibility

\n

The Web GUI has been tested and verified to work with the following browsers:

\n \n \n \n \n
\n\n \n

Release notes

\n \n \n );\n});\n\nexport default About;\n","import { Button, Container, Dimmer, Header, Icon, Input, Popup, Segment, Table } from 'semantic-ui-react';\nimport { AuthFetcher } from '../lib/fetch';\nimport useSWR, { mutate, useSWRConfig } from 'swr';\nimport { Organization as CagesenseOrganization, OrganizationAndSites } from '../lib/types';\nimport { Fragment, useContext, useState } from 'react';\nimport NotyfContext from '../Components/NotyfContext';\nimport { observer } from 'mobx-react';\nimport useStore from '../Store/Store';\nimport _ from 'lodash';\n\nconst InputWithDisable = ({ value, setValue, reset, setReset }: any) => {\n const [enabled, setEnabled] = useState();\n if (reset && enabled) {\n setEnabled(false);\n setReset(false);\n }\n if (enabled) {\n return (\n \n setValue(data.value)}>\n setEnabled(false)}>\n \n );\n }\n return setEnabled(true)}>;\n};\ninterface EditOrganizationProps {\n oldOrganization: CagesenseOrganization;\n\n newOrgId: string;\n newName: string;\n canEdit: boolean;\n enableEdit: (e: boolean) => void;\n}\n\nconst EditOrganization = observer(\n ({ oldOrganization, newOrgId, newName, canEdit, enableEdit }: EditOrganizationProps) => {\n const { authStore } = useStore();\n const notyf = useContext(NotyfContext);\n const editOrganization = async () => {\n if (canEdit) {\n let organization: CagesenseOrganization = {\n node_key: oldOrganization.node_key,\n org_id: oldOrganization.org_id,\n name: oldOrganization.name,\n };\n if (newOrgId !== '') {\n organization.org_id = newOrgId;\n }\n if (newName !== '') {\n organization.name = newName;\n }\n let response = await AuthFetcher('/api/v1/admin/edit/organization', authStore.getTokenFunction(), {\n method: 'PUT',\n body: organization,\n raw: true,\n });\n if (response.ok) {\n notyf.success('Edited ' + oldOrganization.node_key + ' sucessfully');\n } else {\n notyf.error('Failed editing ' + oldOrganization.node_key);\n }\n mutate('/api/v1/admin/users');\n }\n enableEdit(canEdit === false);\n };\n\n return (\n \n );\n }\n);\n\ninterface RemoveOrganizationProps {\n nodeKey: string;\n}\n\nconst RemoveOrganization = observer(({ nodeKey }: RemoveOrganizationProps) => {\n const { authStore } = useStore();\n const { mutate } = useSWRConfig();\n const notyf = useContext(NotyfContext);\n const [open, setOpen] = useState(false);\n const removeOrganization = async () => {\n let response = await AuthFetcher('/api/v1/admin/remove/organization/' + nodeKey, authStore.getTokenFunction(), {\n method: 'DELETE',\n raw: true,\n });\n\n if (response.ok) {\n setOpen(false);\n mutate('/api/v1/admin/users');\n notyf.success('Sucessfully removed organization');\n } else {\n notyf.error('Unable to remove organization');\n }\n };\n return (\n setOpen(false)}\n onOpen={() => setOpen(true)}\n open={open}\n trigger={}\n >\n Are you sure?\n \n \n \n \n \n );\n});\n\nconst AddOrganization = observer(() => {\n const { authStore } = useStore();\n const { mutate } = useSWRConfig();\n const notyf = useContext(NotyfContext);\n const [name, setName] = useState('');\n const [orgId, setOrgId] = useState('');\n const [reset, setReset] = useState(false);\n const addOrganization = async () => {\n if (name.trim() === '') {\n notyf.error('Cannot add organization without a name assigned');\n return;\n }\n let organization: CagesenseOrganization = { node_key: '', org_id: orgId, name: name };\n let response = await AuthFetcher('/api/v1/admin/add/organization', authStore.getTokenFunction(), {\n method: 'PUT',\n body: organization,\n raw: true,\n });\n if (response.ok) {\n mutate('/api/v1/admin/users');\n setName('');\n setOrgId('');\n setReset(true);\n notyf.success('Sucessfully added organization');\n } else {\n notyf.error('unable to add organization');\n }\n };\n return (\n \n \n {\n setName(data.value);\n }}\n >\n \n \n \n \n \n \n \n \n \n );\n});\n\ninterface OrganizationEntryProps {\n organization: CagesenseOrganization;\n}\n\nconst OrganizationEntry = observer(({ organization }: OrganizationEntryProps) => {\n const [newOrgId, setNewOrgId] = useState(organization.org_id);\n const [newName, setNewName] = useState(organization.name);\n const [canEdit, enableEdit] = useState(false);\n return (\n \n \n {\n setNewName(data.value);\n }}\n >\n \n \n {\n setNewOrgId(data.value);\n }}\n >\n \n \n \n \n \n \n \n \n \n );\n});\n\nconst Organizations = observer(() => {\n const { authStore } = useStore();\n const { data, error } = useSWR('/api/v1/admin/users', (url) => AuthFetcher(url, authStore.getTokenFunction()));\n\n const users: CagesenseOrganization[] = data === undefined ? [] : data;\n\n users.sort((a: CagesenseOrganization, b: CagesenseOrganization) => {\n if (a.name === b.name) {\n return a.node_key > b.node_key ? 1 : -1;\n }\n return a.name > b.name ? 1 : -1;\n });\n return (\n \n \n \n Name\n Organization Id\n Node Key\n Actions\n \n \n {users &&\n users.map((value: CagesenseOrganization) => {\n return ;\n })}\n \n \n
\n \n
\n Unable to load users\n
\n
\n
\n );\n});\n\nconst Sites = observer(() => {\n const { authStore } = useStore();\n const { data, error } = useSWR('/api/v1/admin/organizations/sites', (url) => AuthFetcher(url, authStore.getTokenFunction()));\n\n if (error) {\n\n }\n\n const organizations: OrganizationAndSites[] = data === undefined ? [] : data;\n\n organizations.sort((a: OrganizationAndSites, b: OrganizationAndSites) => {\n if (a.organization.name === b.organization.name) {\n return a.organization.node_key > b.organization.node_key ? 1 : -1;\n }\n return a.organization.name > b.organization.name ? 1 : -1;\n });\n return (<>\n {organizations ? organizations.map((oas, index) => ) : <>}\n \n );\n});\n\ninterface SitesViewProps {\n orgAndSites: OrganizationAndSites\n}\n\nconst deleteNode = async (siteKey: string, tokenFunction: any, notyf: any) => {\n let response = await AuthFetcher(\"/api/v1/delete/node/key/\" + siteKey + \"/kind/Site\", tokenFunction, { raw: true, method: \"DELETE\" })\n if (response.ok) {\n mutate('/api/v1/admin/organizations/sites')\n notyf.success(\"Removed site\")\n } else {\n console.log(response)\n notyf.error(\"Failed to remove site\")\n }\n}\n\nconst SitesView = observer(({ orgAndSites }: SitesViewProps) => {\n const { authStore } = useStore()\n const notyf = useContext(NotyfContext)\n return <>\n
{_.capitalize(orgAndSites.organization.name)}
\n \n \n Site Name\n Delete\n \n \n {orgAndSites.sites && orgAndSites.sites.map((site) => {\n return \n \n {_.capitalize(site.name)}\n \n \n \n \n \n })}\n \n\n
\n \n})\n\nconst Admin = observer(() => {\n const { appStore } = useStore();\n appStore.setBreadcrumb('Admin');\n return (\n \n
Cagesense Admin
\n \n \n
\n );\n});\n\nexport default Admin;\n","import _ from 'lodash';\nimport {\n SensorLocationMeta,\n TEMPERATURE_MEASUREMENT_TYPE,\n TILT_MEASUREMENT_TYPE,\n DEPTH_MEASUREMENT_TYPE,\n TURBIDITY_MEASUREMENT_TYPE,\n SALINITY_MEASUREMENT_TYPE,\n OXYGEN_MEASUREMENT_TYPE\n} from './types';\n\n/**\n * Formats the name of the sensor as a computed property\n * @param sensorItem - Object containing node_key, node_kind, sensor_type and sensor_id amongst other things\n * @returns string - Formatted sensor name\n */\nconst formatSensorName = (sensorItem: any) => {\n if (sensorItem) {\n // If the sensor has a name, return that, otherwise use \"SensorType sensor\", i.e \"Oxygen sensor\". Suffix with ID.\n return sensorItem?.name?.length ? sensorItem.name : `${sensorItem.sensor_type} sensor (ID: ${sensorItem.sensor_id})`\n } else {\n return 'N/A'\n }\n}\n\n/**\n * Returns the name of a color as string for the type of measurement requested\n * @param measurement string - The measurement type\n * @returns string - Color representing this measurement type\n */\nconst measurementColor = (measurement: string, darkMode: boolean = false) => {\n let color = 'black'\n if (darkMode === true) {\n color = 'white'\n }\n switch (measurement) {\n case OXYGEN_MEASUREMENT_TYPE:\n color = 'green'\n if (darkMode === true) {\n color = '#4bef8f'\n }\n break;\n case TURBIDITY_MEASUREMENT_TYPE:\n color = '#ffc107'\n break;\n case SALINITY_MEASUREMENT_TYPE:\n color = 'grey'\n if (darkMode === true) {\n color = 'white'\n }\n break;\n case TEMPERATURE_MEASUREMENT_TYPE:\n color = 'blue'\n if (darkMode === true) {\n // Lighter blue\n color = '#78e0ff'\n }\n break;\n default:\n break;\n }\n return color\n}\n\nfunction formatDecimals(val: number, digits = 2) {\n return val.toLocaleString(navigator.language, { minimumFractionDigits: digits, maximumFractionDigits: digits });\n}\n\nfunction RoundDecimalPlaces(val: number, digits = 2) {\n let pow = Math.pow(10, digits);\n return Math.round(val * pow) / pow;\n}\n\nconst getSensorNameFromLastMessage = (last_message: any, sensor: any | undefined, maxLength?: number) => {\n if (last_message) {\n let name = _.capitalize(last_message.sensor_type);\n if (sensor) {\n name = name + ' - ' + sensor.name;\n } else {\n name = name + '-' + padSensorId(last_message.sensor_id);\n }\n return name;\n }\n return '';\n};\nconst getSensorName = (sensor_type: string, sensor_id: number, sensor_name?: string, maxLenght?: number) => {\n const name: string =\n sensor_name && sensor_name !== '' ? sensor_name : _.capitalize(sensor_type) + ' - ' + padSensorId(sensor_id);\n return maxLenght && name.length > maxLenght ? name.substring(0, maxLenght) + '...' : name;\n};\n\nconst padSensorId = (sensorId: number) => {\n return String(sensorId).padStart(3, '0');\n};\n\nconst getSensorSegmentType = ({ type }: SensorLocationMeta) => {\n if (type === 'depth') {\n return '';\n }\n let formattedType = type.charAt(0).toUpperCase() + type.slice(1);\n formattedType = formattedType.replaceAll('_', ' ');\n return formattedType;\n};\n\nconst getSensorDepth = ({ max_depth, min_depth, type }: SensorLocationMeta) => {\n return min_depth === max_depth ? max_depth + 'm' : min_depth + ' - ' + max_depth + 'm';\n};\n\nconst getSensorSegment = ({ left_border, right_border }: any) => {\n if (left_border === 0 && right_border === 360) {\n //full circle\n return {\n segmentNr: -1,\n label: '',\n };\n } else if (left_border === 0) {\n //North facing segment\n return {\n segmentNr: 0,\n label: 'North',\n };\n } else if (left_border === 90 && right_border <= 270) {\n return {\n segmentNr: 1,\n label: 'East',\n };\n } else if (left_border === 180) {\n return {\n segmentNr: 2,\n label: 'South',\n };\n } else if (left_border === 270) {\n return {\n segmentNr: 2,\n label: 'West',\n };\n }\n return {\n segmentNr: -1,\n label: '',\n };\n};\n\nconst getUnit = (measurementType: string) => {\n switch (measurementType) {\n default:\n return '';\n case OXYGEN_MEASUREMENT_TYPE:\n return '%';\n case TEMPERATURE_MEASUREMENT_TYPE:\n return '\\u00b0C';\n case DEPTH_MEASUREMENT_TYPE:\n return 'm';\n case TILT_MEASUREMENT_TYPE:\n return '\\u00b0';\n case TURBIDITY_MEASUREMENT_TYPE:\n return 'NTU';\n case SALINITY_MEASUREMENT_TYPE:\n return 'PSU'\n }\n};\n\nconst getStrokeForGraphFromType = (measurementType: string) => {\n switch (measurementType) {\n default:\n return '1 0';\n case OXYGEN_MEASUREMENT_TYPE:\n return '2 2';\n case TEMPERATURE_MEASUREMENT_TYPE:\n return '7 3';\n case DEPTH_MEASUREMENT_TYPE:\n return '4 4';\n case TILT_MEASUREMENT_TYPE:\n return '5 5';\n case TURBIDITY_MEASUREMENT_TYPE:\n return '6 6';\n }\n};\n\nconst NoValue = -1e6;\n\nexport {\n formatSensorName,\n getSensorSegmentType,\n measurementColor,\n formatDecimals,\n RoundDecimalPlaces,\n getSensorName,\n getSensorNameFromLastMessage,\n getSensorDepth,\n getSensorSegment,\n padSensorId,\n NoValue,\n getUnit,\n getStrokeForGraphFromType,\n};\n","// Contains various application wide defaults and configurations\nconst AppSettings = {\n graphUpdateInterval: 30000\n}\n\nexport default AppSettings","/*\n* A message component that tries to standardize the look and feel \n* of informational boxes through formatting, colors and icons.\n*/\nimport { Icon, Message, SemanticCOLORS, SemanticICONS } from \"semantic-ui-react\"\n\ninterface props {\n heading?: string | '',\n message: string | '',\n icon: SemanticICONS | 'check',\n iconColor?: SemanticCOLORS | 'blue',\n loading?: boolean | false,\n}\nconst MessageBox = ({ heading, message, icon, iconColor, loading = false }: props) => {\n return (\n \n \n \n {heading?.length &&\n \n {heading}\n \n }\n {message}\n \n \n )\n}\n\nexport default MessageBox","import { AuthFetcher } from '../../lib/fetch';\nimport { observer } from 'mobx-react';\nimport {\n LineChart,\n ResponsiveContainer,\n Line,\n Brush,\n YAxis,\n XAxis,\n Tooltip,\n CartesianGrid,\n} from 'recharts';\nimport { Button, Icon, Image, Popup, Segment } from 'semantic-ui-react';\nimport { getUnit, measurementColor, formatSensorName } from '../../lib/format';\nimport AppSettings from '../../Core/AppSettings';\nimport useStore from '../../Store/Store';\nimport useSWR, { mutate } from 'swr';\nimport MessageBox from '../Message';\nimport { useEffect, useState } from 'react';\n\nconst formatToDate = (input: any) => {\n let value\n // The brush formatter sends in an object instead of the timestamp\n if (typeof input === 'object') {\n value = input.ts\n } else {\n value = input\n }\n return new Date(value * 1000).toLocaleString('nb-NO')\n};\n\nconst formatYAxis = ((value: any) => {\n // Format whatever value (numeric) on the Y axis to have at max 2 decimals\n return Math.round(value).toString()\n})\n\nconst SingleGraph = observer(({ sensor }: any) => {\n const { analyticsStore, authStore } = useStore()\n // Read settings from analytics store regarding anything related to the current preset\n const viewData = analyticsStore.getViewData()\n const [darkMode, setDarkMode] = useState(analyticsStore.getDarkMode())\n const [graphGrid, setGraphGrid] = useState(analyticsStore.getGraphGrid())\n const data_points = viewData?.graph_settings?.data_points\n var startDate = viewData?.graph_settings?.date_from\n var endDate = viewData?.graph_settings?.date_to\n const url = `/api/v1/sensor/${sensor?.sensor_type}/${sensor?.sensor_id}/history/${sensor?.measurement_type}/from/${startDate}/to/${endDate}?samples=${data_points}`\n let { data: graphData, error: graphDataError } = useSWR(\n url,\n url => AuthFetcher(url, authStore.getTokenFunction()),\n {\n // A refresh interval of 0 means NO refresh, otherwise we update each 5 seconds\n refreshInterval: viewData?.graph_settings.live === true ? AppSettings.graphUpdateInterval : 0\n });\n\n // Side effect for when dark mode changes\n useEffect(() => {\n window.addEventListener('storage', () => {\n setDarkMode(analyticsStore.getDarkMode())\n setGraphGrid(analyticsStore.getGraphGrid())\n })\n }, [analyticsStore])\n\n // Sort the graph data ascending by timestamp (ts), verifying that the next item is larger than the previous \n if (graphData && graphData?.data) {\n graphData.data = graphData.data.sort((a: any, b: any) => (b.ts > a.ts))\n }\n return (\n \n
\n {/* \n * The image of the type of sensor this graph is of.\n * Please note that this is the type of sensor, not the measurement type\n * which may be confusing. Consider removing.\n */}\n \n
\n \n {formatSensorName(sensor)}\n \n {/* Sensor meta data */}\n

\n Reading: {sensor.measurement_type}\n Location: {sensor?.cage_name || 'N/A'}\n ID: {sensor?.sensor_id || 'N/A'}\n Depth: {sensor?.sensor_location_meta?.min_depth}-{sensor?.sensor_location_meta?.max_depth}m\n

\n
\n
\n {/* Mutate invalidates the cache for the graph URL, making sure a new fetch is performed */}\n mutate(url)}\n className='p-1 me-2'\n color='blue'\n size='tiny'\n >\n \n \n }\n content='Manually refresh readings from this sensor'\n />\n analyticsStore.toggleSensor(sensor, sensor.measurement_type, false)}\n className='p-1 me-1'\n color='blue'\n size='tiny'\n >\n \n \n }\n content='Remove this sensor graph'\n />\n
\n
\n {graphDataError && (\n \n )}\n {viewData && (\n \n {/* Is there data to present? */}\n {graphData && graphData?.data?.length ?\n \n \n \n \n \n \n {/* Brush allows for scrolling and zooming the graph (!) */}\n \n {\n return [\n value.toFixed(2),\n formatSensorName(sensor)\n ]\n }}\n contentStyle={{\n backgroundColor: darkMode === false ? '#eee' : '#333',\n color: darkMode === false ? '#222' : '#fff',\n fontWeight: 'bold'\n }}\n />\n \n \n :\n \n }\n \n )}\n\n \n )\n})\n\nexport default SingleGraph","import { useEffect, useState } from \"react\";\nimport useStore from \"../../Store/Store\";\nimport useSWRInfinite from 'swr/infinite';\nimport { observer } from \"mobx-react-lite\";\nimport {\n LineChart,\n ResponsiveContainer,\n Line,\n Brush,\n YAxis,\n XAxis,\n Tooltip,\n CartesianGrid,\n} from 'recharts';\nimport AppSettings from \"../../Core/AppSettings\";\nimport { Icon, Image, Message, Popup, Segment } from \"semantic-ui-react\";\nimport { AuthFetcher } from \"../../lib/fetch\";\nimport { getUnit, measurementColor } from \"../../lib/format\";\n\nconst formatYAxis = ((value: any) => {\n // Format whatever value (numeric) on the Y axis to have at max 2 decimals\n return Math.round(value).toString()\n})\n\nconst formatToDate = (input: any) => {\n let value\n // The brush formatter sends in an object instead of the timestamp\n if (typeof input === 'object') {\n if ('data' in input && input?.data?.length > 0) {\n value = input?.data[0].ts\n } else {\n value = input.ts\n }\n } else {\n value = input\n }\n if (value) {\n return new Date(value * 1000).toLocaleString('nb-NO')\n }\n return ''\n};\n\n// This graph groups all sensor readings by type and displays them in _one_ graph.\nconst GroupedByTypeGraph = observer(({ sensors, measurementType }: { sensors: any, measurementType: string }) => {\n const { analyticsStore, authStore } = useStore()\n const [darkMode, setDarkMode] = useState(analyticsStore.getDarkMode())\n const [graphGrid, setGraphGrid] = useState(analyticsStore.getGraphGrid())\n const viewData = analyticsStore.getViewData()\n\n const startDate = viewData.graph_settings.date_from\n const endDate = viewData.graph_settings.date_to\n const numberOfDataPoints = viewData.graph_settings.data_points\n /**\n * First, create a list of URLs which we'll use to fetch each sensor's readings\n * The request key (index) is what SWR uses to know what data (index in the array) to retrieve.\n * The initial value of the request key is 0, so we have to update the number of sensors selected before each request.\n */\n /**\n * View data - Each Sensor Structure\n * [\n * {\n * \"name\": \"Some name for the sensor\",\n * \"measurement_type\": \"oxygen\",\n * \"sensor_id\": 12,\n * \"sensor_type\": \"tilt\",\n * \"sensor_location_meta\": [...],\n * \"cage_name\": \"Some name\"\n * },\n * ...\n * ]\n */\n\n const { data, setSize } = useSWRInfinite(index => {\n const url =\n startDate && endDate && sensors[index]\n ? `/api/v1/sensor/${sensors[index].sensor_type}/${sensors[index].sensor_id}/history/${sensors[index].measurement_type}/from/${startDate}/to/${endDate}?samples=` + numberOfDataPoints\n : '';\n\n return {\n url: url,\n // A refresh interval of 0 means NO refresh, otherwise we update as per app setting\n refreshInterval: viewData.graph_settings.live === true ? AppSettings.graphUpdateInterval : 0\n };\n },\n params => {\n // This sets up the request prior to each sensor, setting the Bearer token for authentication\n return AuthFetcher(params.url, authStore.getTokenFunction())\n },\n {\n revalidateAll: false,\n // A refresh interval of 0 means NO refresh, otherwise we update as per app setting\n refreshInterval: viewData.graph_settings.live === true ? AppSettings.graphUpdateInterval : 0\n })\n\n useEffect(() => {\n window.addEventListener('storage', () => {\n setDarkMode(analyticsStore.getDarkMode())\n setGraphGrid(analyticsStore.getGraphGrid())\n })\n setSize(sensors.length)\n analyticsStore.setDateFrom(viewData.graph_settings.date_from)\n analyticsStore.setDateTo(viewData.graph_settings.date_to)\n },\n [\n setSize,\n sensors,\n analyticsStore,\n viewData.graph_settings.date_from,\n viewData.graph_settings.date_to,\n sensors?.length\n ]\n )\n\n let timelineData: any = []\n\n data?.map((e: any) => {\n return timelineData.push(e)\n })\n /**\n * Filter through each timeline data and see if there are entries with data.\n * Entries with no data are removed.\n */\n const sensorsWithoutData = timelineData?.filter((e: any) => e?.data?.length === 0)\n timelineData = timelineData?.filter((e: any) => e?.data?.length > 0)\n return (\n
\n {\n sensorsWithoutData.length > 0\n ?\n \n \n Some of the selected sensors have no data and are not shown in the graph:\n \n {sensorsWithoutData.map((e: any) => e?.name).join(', ')}\n \n \n : ''\n }\n
\n {/*\n * Image of the type of sensor this graph is of.\n * Note: There's a diff between sensor type and measurement\n * we have images of each sensor type, but not each measurement.\n * Grouped graphs only know about that kind of measurement we're looking at, \n * not the type of sensor it is until the date is later iterated.\n * That makes it somewhat error prone when only checking against the measurement type.\n * Instead, we just select the first sensor (if present) and use the sensor_type from\n * that, which indicates what all readings are for. \n * Not very elegant, but is error proof.\n */}\n \n
\n \n {measurementType} readings for {(sensors?.length)} selected sensor(s)\n \n \n }\n content={`This graph has grouped all ${measurementType} readings of the same measurement type and placed them in one graph.`}\n />\n

\n {/* Format the type and all sensor IDs that have been selected/grouped in this graph */}\n Reading: {measurementType} | Sensor(s): {timelineData.map((e: any) => e.name).join(', ')}\n

\n
\n
\n {\n timelineData?.length > 0 && viewData.sensors?.length > 0\n ?\n \n \n \n \n {timelineData.map((sensorReadout: any, sensorReadoutIndex: number) => {\n return (\n \n )\n })}\n \n \n {/* Brush allows for scrolling and zooming the graph (!) */}\n \n {\n return [value.toFixed(2), name]\n }}\n contentStyle={{\n backgroundColor: darkMode === false ? '#eee' : '#333',\n color: darkMode === false ? '#222' : '#fff',\n fontWeight: 'bold'\n }}\n />\n \n \n \n :\n \n \n There is not data for the selected date range. Try selecting a different time range.\n \n }\n\n
\n )\n})\n\nexport default GroupedByTypeGraph","import { observer } from 'mobx-react';\nimport { useContext, useState } from 'react';\nimport { Button, Icon, Input, Loader, Popup } from 'semantic-ui-react';\nimport NotyfContext from '../Components/NotyfContext';\nimport { AuthFetcher } from '../lib/fetch';\nimport useStore from '../Store/Store';\n\ninterface CsvDownloadProps {\n sensors: string[];\n to: number;\n from: number;\n}\n\nconst CsvDownload = observer(({ sensors, to, from }: CsvDownloadProps) => {\n const { authStore } = useStore();\n const [name, setName] = useState('exported-sensor-report');\n const [inProgress, setInProgess] = useState(false);\n const notyf = useContext(NotyfContext);\n const showLoader = () => {\n if (inProgress) {\n return ;\n }\n return (\n \n Download\n \n }\n content='Download the sensor report as CSV'\n />\n );\n };\n\n const handleClientsDownload = async () => {\n setInProgess(true);\n console.dir(sensors)\n const response = await AuthFetcher(\n '/api/v1/download/sensor/csv/from/' + from + '/to/' + to + '?' + sensors.map((sensor:any) => 'sensor=' + sensor.node_key).join('&'),\n authStore.getTokenFunction(),\n {\n headers: {\n Accepts: '*/*',\n 'Content-Type': 'text/plain; charset=utf-8',\n },\n raw: true,\n }\n );\n if (response.ok) {\n const blob = await response.blob();\n const url = window.URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', name + `.csv`);\n document.body.appendChild(link);\n link.click();\n notyf.success('Report generated');\n } else {\n notyf.error('unable to download');\n }\n setInProgess(false);\n };\n\n return (\n \n
Download Sensor Report
\n {\n setName(data.value);\n }}\n >\n \n \n {showLoader()}\n \n \n \n\n }\n trigger={\n \n }\n >\n );\n});\n\nexport default CsvDownload;\n","import { observer } from \"mobx-react\"\nimport { Button, Grid, Icon, Message, Popup } from \"semantic-ui-react\"\nimport { DateRangePicker } from 'react-dates';\nimport { useState } from \"react\";\nimport 'react-dates/initialize';\nimport 'react-dates/lib/css/_datepicker.css';\nimport useStore from \"../../Store/Store\"\nimport moment from \"moment\";\nimport CsvDownload from \"../../Routes/CsvDownload\";\nimport AppSettings from \"../../Core/AppSettings\";\n\nconst minDate = moment().subtract(12, 'month').startOf('month');\nconst maxDate = moment();\n\nconst GraphOptions = observer(({ viewData }: any) => {\n const { analyticsStore } = useStore()\n const [startDate, setStartDate] = useState(moment().startOf('day'));\n const [endDate, setEndDate] = useState(moment());\n const [focusedInput, setFocusedInput] = useState(null);\n\n const todayDateNow = moment(Date.now())\n /*\n * Remember: Date objects in Moment are mutable, so using references to any previously declared date object,\n * will update the original definition as well (!)\n */\n const todayDateStart = moment(Date.now()).startOf('day')\n const todayDateEnd = moment(Date.now()).endOf('day')\n\n const handleDatesChange = ({ startDate, endDate }: any) => {\n if (startDate) {\n // Write the date changes to store as unix timestamps to the currently active preset\n viewData.graph_settings.date_from = startDate.unix()\n // Satisfy the requirements of the date range selector\n setStartDate(startDate)\n }\n if (endDate) {\n viewData.graph_settings.date_to = endDate.unix()\n setEndDate(endDate)\n // If the end date is either at the end of today or greater than the current time, graph data is live\n if (endDate.unix() >= todayDateNow.unix() || endDate.unix() === todayDateEnd.unix()) {\n viewData.graph_settings.live = true\n } else {\n viewData.graph_settings.live = false\n }\n }\n };\n\n // Toggle live data on/off. If on, the to date must be set to today\n const toggleLiveData = () => {\n viewData.graph_settings.live = !viewData.graph_settings.live\n if (viewData.graph_settings.live === true) {\n // Set the start time from the start of today\n viewData.graph_settings.date_from = todayDateStart.unix()\n // Set the end time to the current time\n viewData.graph_settings.date_to = todayDateNow.unix()\n setStartDate(todayDateStart)\n setEndDate(todayDateNow)\n }\n }\n // List of presets that are shown as buttons on the date range chooser\n const RenderDatePresets = () => {\n return (\n \n {\n handleDatesChange(\n {\n startDate: moment(new Date()).subtract(1, 'hour'),\n endDate: moment(new Date())\n }\n )\n }}\n >\n Last hour\n \n {\n handleDatesChange(\n {\n startDate: moment(new Date()).startOf('day'),\n endDate: moment(new Date())\n }\n )\n }}\n >\n Today\n \n {\n handleDatesChange(\n {\n startDate: moment(new Date()).subtract(1, 'day').startOf('day'),\n endDate: moment(new Date()).subtract(1, 'day').endOf('day')\n }\n )\n }}\n >\n Yesterday\n \n }\n content=\"Changing dates to the past will disable live updates.\"\n />\n {\n handleDatesChange(\n {\n startDate: moment(new Date()).startOf('isoWeek'),\n endDate: moment(new Date()).endOf('day')\n }\n )\n }}\n >\n This week\n \n {\n handleDatesChange(\n {\n startDate: moment(new Date()).subtract(1, 'week').startOf('isoWeek'),\n endDate: moment(new Date()).subtract(1, 'week').endOf('isoWeek')\n }\n )\n }}\n >\n Last week\n \n }\n content=\"Changing dates to the past will disable live updates.\"\n />\n \n );\n };\n\n const dataPointOptions = [50, 100, 200, 500]\n const graphDisplayOptions = ['small', 'medium', 'large']\n return (\n
\n \n {/* Buttons related to graph options, group graphs and download reports */}\n \n
\n Graph options\n
\n \n toggleLiveData()}\n className={viewData.graph_settings.live === true ? 'text-dark' : 'text-light'}\n >\n \n Live\n \n }\n />\n analyticsStore.toggleDisplayGroupedGraph()}\n active={viewData.graph_settings.grouped_graphs === true}\n color={viewData.graph_settings.grouped_graphs === true ? 'green' : 'grey'}\n className={viewData.graph_settings.grouped_graphs === true ? 'text-dark' : 'text-light'}\n >\n \n Group\n \n }\n />\n \n \n \n {/* Buttons related to change of number of data points */}\n \n
\n Graph points\n
\n \n {\n dataPointOptions.map((value: number, key: any) => {\n return (\n analyticsStore.setDataPoints(value)}\n active={viewData.graph_settings.data_points === value}\n >\n {value}\n \n }\n />\n )\n })\n }\n \n \n {/* Options related to the size of each graph square/size */}\n \n
\n Graph sizes\n
\n \n {\n graphDisplayOptions.map((value: string, key: number) => {\n return (\n analyticsStore.setGraphSize(value)}\n active={viewData.graph_settings.graph_size === value.toString()}\n >\n {value}\n \n }\n />\n )\n })\n }\n \n \n {/* The date range chooser */}\n \n
\n Date (from to)\n
\n setFocusedInput(focusedInput)}\n displayFormat=\"DD/MM/YYYY\"\n minimumNights={0}\n isOutsideRange={(date) => date.isBefore(minDate, 'day') || date.isAfter(maxDate, 'day')}\n renderCalendarInfo={RenderDatePresets}\n />\n \n \n {\n \n {viewData.graph_settings.live === true\n ?\n <>\n \n Live update is on. Data is updated every {AppSettings.graphUpdateInterval / 1000} seconds.\n \n :\n <>\n \n Live update is off. Click the \"Live\" button to enable live updates.\n \n }\n \n }\n
\n )\n})\n\nexport default GraphOptions","// Contains the analytic views saved for a user\nimport { observer } from \"mobx-react\"\nimport { useState } from \"react\"\nimport { Button, Icon, Input, Popup, Select } from \"semantic-ui-react\"\nimport { DeleteAnalyticView, SaveAnalyticView } from \"../../lib/fetch\"\nimport moment from \"moment\"\nimport useStore from \"../../Store/Store\"\nimport MessageBox from \"../Message\"\n\nconst localStorageViewIndexKey = 'cagesense-view-index'\n\nconst ViewManager = observer(({ views, setAllViews, setActiveViewIndex, activeViewIndex }: { views: any, setAllViews: any, setActiveViewIndex: any, activeViewIndex: any }) => {\n const [showSaveDialogue, setShowSaveDialogue] = useState(false)\n const [saved, setSaved] = useState(false)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState('')\n const { analyticsStore, authStore } = useStore()\n\n // Get the currently active view\n let currentView = analyticsStore.getViewData()\n let viewIndex = 0\n let existingViewIndex = localStorage.getItem(localStorageViewIndexKey)\n // Overwrite the default userPreferences if one is found from local storage\n if (existingViewIndex) {\n viewIndex = JSON.parse(existingViewIndex)\n setActiveViewIndex(viewIndex)\n }\n\n const saveView = () => {\n setLoading(true)\n SaveAnalyticView(currentView, authStore)\n .then(response => {\n // Update the view of the selected index, then send back to update all views in parent\n views[activeViewIndex] = response\n setAllViews(views)\n // Indicate that the change has been saved\n setSaved(true)\n setShowSaveDialogue(false)\n // Change the \"saved\" status back to false after some seconds\n setTimeout(() => {\n setSaved(false)\n }, 2000)\n })\n .catch((e: any) => {\n setError(e.toString())\n })\n .finally(() => {\n setLoading(false)\n })\n }\n const deleteView = () => {\n // Provide a confirmation dialogue before deleting\n if (window.confirm(`Are you sure you want to remove ${currentView?.name}?`)) {\n setLoading(true)\n DeleteAnalyticView(currentView, authStore)\n .then(success => {\n if (success === true) {\n // We need to filter out the deleted view and return the list to parent\n views = views.splice(activeViewIndex, 1)\n // If there are no views left after deletion, add an empty preset to the list\n if (!views.length || views.length === 0) {\n views.push({\n node_key: null,\n name: 'New view',\n graph_settings: {\n live: true,\n grouped_graphs: false,\n data_points: 100,\n date_from: moment(new Date()).startOf('day').subtract(new Date().getTimezoneOffset(), 'minute').unix(),\n date_to: moment(new Date()).endOf('day').subtract(new Date().getTimezoneOffset(), 'minute').unix(),\n graph_size: 'medium',\n },\n sensors: []\n })\n }\n setAllViews(views)\n // After deletion, set the selected view to the first in the list\n setActiveViewIndex(0)\n // Indicate that deletion is done\n setSaved(true)\n setShowSaveDialogue(false)\n // Change the \"saved\" status back to false after some seconds\n setTimeout(() => {\n setSaved(false)\n }, 2000)\n }\n })\n .catch((e: any) => {\n setError(e.toString())\n })\n .finally(() => {\n setLoading(false)\n })\n }\n }\n\n let options = views?.map((view: any, index: number) => {\n return {\n key: `view-option-${index}`,\n value: index,\n text: `${view?.name ? view.name : 'Unnamed view'} ${view?.sensors?.length ? ` - ${view.sensors.length} sensor(s)` : ''}`\n }\n })\n return (\n
\n {views?.length > 0\n ?\n <>\n {\n // This calls the parent set method, changing the index to the selected view/preset\n setActiveViewIndex(value)\n // Save the setting to local storage for later use\n localStorage.setItem(localStorageViewIndexKey, JSON.stringify(value))\n }}\n />\n \n }\n />\n \n :\n
\n No saved views\n
\n }\n {showSaveDialogue ?\n (\n <>\n {\n analyticsStore.setViewDataName(v?.value)\n }}\n />\n \n setShowSaveDialogue(false)}\n color='grey'\n >\n Cancel\n \n saveView()}\n color='black'\n disabled={loading === true || !currentView?.name || currentView?.name?.length < 1}\n >\n Save\n \n \n {currentView?.node_key !== null &&\n deleteView()}\n color='red'\n disabled={loading === true}\n className=\"ms-2\"\n >\n Delete\n \n \n }\n {error &&\n \n }\n {saved === true &&\n \n \n Saved!\n \n }\n {loading === true &&\n \n \n Saving...\n \n }\n \n )\n :\n <>\n setShowSaveDialogue(true)}\n color='black'\n >\n {/* Change the button text depending on whether it's an existing view or new */}\n {currentView?.node_key !== null ? 'Edit' : 'Save'}\n \n\n \n }\n\n
\n )\n})\n\nexport default ViewManager","import '../css/Analytics.css';\nimport { observer } from 'mobx-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Accordion, Button, Checkbox, Dropdown, Grid, Icon, Label, Menu, Message, Popup, Segment, Sticky } from \"semantic-ui-react\"\nimport { GetAnalyticViews, SiteDetailsFetcher } from '../lib/fetch'\nimport useStore from \"../Store/Store\"\nimport moment from 'moment';\n// The component that displays a single graph for one sensor's reading\nimport SingleGraph from '../Components/Analytics/SingleGraph'\n// The component that displays grouped graphs for one type of sensor reading (i.e oxygen)\nimport GroupedByTypeGraph from '../Components/Analytics/GroupedByTypeGraph'\n// The graph option segment with things like selection for data points and grid toggle\nimport GraphOptions from '../Components/Analytics/GraphOptions';\nimport MessageBox from '../Components/Message';\nimport ViewManager from '../Components/Analytics/ViewManager';\n\n/**\n * Computed result of the relation between sizes in text form and that corresponding grid column width\n * @param graph_size - string that should be small, medium or large\n * @returns number - Width to use for the grid columns\n */\nconst computedGraphSize = (graph_size: string) => {\n const size = graph_size.toLowerCase()\n switch (size) {\n case 'small':\n return 4\n case 'medium':\n return 8\n case 'large':\n return 16\n default:\n return 8\n }\n}\n\n/**\n * Iterates each sensor in a sensor location (assigned or unassigned) and displays their respective measurements\n */\nconst SensorLocationItems = observer(({ location, locationIndex, cageName }: { location: any, locationIndex: number, cageName: string }) => {\n const { analyticsStore } = useStore()\n return (\n
\n \n {location.name}\n \n {location?.sensors?.map((sensor: any, sensorIndex: number) => {\n return (\n -1 ? 'bg-dark-green' : ''}`\n }\n >\n
\n \n
\n
\n {sensor.name} - ID: {sensor.sensor_id}\n
\n
\n {location.name}\n
\n
\n
\n {/* Measurement types for each sensor */}\n
\n {/* The measurement order may be different, so sort them alphabetically so they display uniformly */}\n {sensor?.measurements?.sort((a: any, b: any) => (a < b ? -1 : 1))?.map((measurement: string, measurementIndex: number) => {\n return (\n {measurement}}\n className='text-capitalize me-2 text-sm'\n onChange={(e, data) => analyticsStore.toggleSensor(sensor, measurement, data.checked, location.meta, cageName)}\n toggle\n checked={analyticsStore.isSensorAndMeasurementSelected(sensor.sensor_id, sensor.sensor_type, measurement) > -1}\n />\n )\n })}\n
\n
\n )\n })}\n \n )\n})\n/**\n * Renders the sidebar menu with all sensors for the currently selected site,\n * grouped by what cage they belong to.\n * @param siteData - Array of site and cage data with sensor locations\n * @param viewData - Object holding info on the current active view and the settings in that\n * @returns ReactElement\n */\nconst SidebarMenu = observer(({ siteData, viewData }: { siteData: any, viewData: any }) => {\n const { analyticsStore } = useStore()\n const [activeIndex, setActiveIndex] = useState(0)\n\n /**\n * We use this to determine whether the unassigned category is open/closed.\n * This value is outside the range of the other cage indexes.\n */\n const unassignedSensorsIndex = siteData.cages.length + 1\n\n const toggleCategory = (index: any) => {\n if (index === activeIndex) {\n setActiveIndex(null)\n } else {\n setActiveIndex(index)\n }\n }\n /*\n * Filter only sensor locations (depths) that have sensors present \n * and cache the result (since potentially expensive operation)\n */\n const assignedSensors = useMemo(\n () => {\n siteData.cages.map((cage: any, index: number) => {\n return siteData.cages[index].sensor_locations = cage?.sensor_locations?.filter((f: any) => f.sensors.length)\n })\n return {\n name: siteData.name,\n cages: siteData.cages\n }\n }, [siteData]\n )\n\n const unassignedSensors = useMemo(\n () => {\n /**\n * The assigned sensors have the sensors attribute, however the unassigned ones do not.\n * In order to use a common component to list them both, the structure needs to be the same.\n */\n return {\n sensors: siteData?.unassigned_sensors,\n meta: {\n type: 'Unassigned',\n max_depth: 0,\n min_depth: 0,\n left_border: 0,\n right_border: 0\n }\n }\n }, [siteData]\n )\n // Does the current active site have cages present?\n if (assignedSensors?.cages?.length) {\n return (\n \n \n
\n \n My sensors\n {/* Show a clear selection button only if there are sensors selected */}\n {viewData?.sensors?.length > 0 && (\n { analyticsStore.setSelectedSensors([]) }}\n >\n \n Clear all\n \n }\n content='Clear all selected sensors'\n position='bottom left'\n />\n )}\n \n {/* Iterate each cage */}\n \n {/* List the assigned sensors to a cage */}\n {assignedSensors.cages.map((cage: any, cageIndex: number) => {\n return (\n
\n toggleCategory(cageIndex)}\n >\n
\n
\n \n {cage.name}\n
\n
\n {cage?.sensor_locations.length} sensors\n
\n
\n \n \n
\n {/* List sensors and their measurements in each cage */}\n {cage?.sensor_locations.map((location: any, locationIndex: any) => {\n return \n })}\n
\n \n
\n )\n })}\n {/* List the unassigned sensors */}\n toggleCategory(unassignedSensorsIndex)}\n >\n
\n
\n \n Unassigned sensors\n
\n
\n {unassignedSensors?.sensors?.length} sensors\n
\n
\n \n \n
\n

Tip: Assign sensors on the \"My site\" page.

\n \n
\n \n \n
\n
\n
\n )\n } else {\n return (\n
\n There are no cages setup on your site. You can setup some from the overview map.\n
\n )\n }\n})\n\n/**\n * Traverses the site data and counts all sensors across all cages and returns a total number\n * @param siteData Array of cages, sensor locations and sensors\n * @returns number - The accumulated number of sensors available for a site\n */\nconst numberOfSensors = (siteData: any) => {\n let sensorCount = 0\n siteData.cages.map((cage: any, index: number) => {\n return siteData.cages[index].sensor_locations = cage?.sensor_locations?.filter((f: any) => {\n sensorCount += Number.parseInt(f?.sensors?.length) || 0\n return f.sensors.length\n })\n })\n return sensorCount\n}\n\nconst Analytics2 = observer((props: any) => {\n const { siteStore, analyticsStore, authStore } = useStore()\n const [siteData, setSiteData] = useState()\n const [allViews, setAllViews] = useState([analyticsStore.getViewData()])\n const [loading, setLoading] = useState(false)\n const [darkMode, setDarkMode] = useState(analyticsStore.getDarkMode())\n const [graphGrid, setGraphGrid] = useState(analyticsStore.getGraphGrid())\n const [activeViewIndex, setActiveViewIndex] = useState(0)\n const [sensorListVisible, setSensorListVisible] = useState(false)\n // Setup default view first, in case there aren't any\n const [viewData, setViewData] = useState(allViews[0])\n const toggleSensorList = () => setSensorListVisible(value => !value)\n let siteId = siteStore.getSiteKey()\n\n // Use the site ID from URL and set that as the active site key. Will update whenever siteID changes\n useEffect(() => {\n // Event listening for when dark mode changes\n window.addEventListener('storage', () => {\n setDarkMode(analyticsStore.getDarkMode())\n setGraphGrid(analyticsStore.getGraphGrid())\n })\n // If there aren't any sensors selected, show the sidebar\n // For some inexplicable reason siteID sometimes is \"local\", which causes 500 errors\n if (siteId !== 'local') {\n setLoading(true)\n // Fetch all sensors for the current site when siteID changes (and only once)\n SiteDetailsFetcher(siteStore.getSiteKey(), authStore)\n .then(r => {\n setSiteData(r)\n })\n GetAnalyticViews(authStore)\n .then(views => {\n // Supplement the view list with a new empty one users can select\n views.push({\n node_key: null,\n name: 'New view',\n graph_settings: {\n live: true,\n grouped_graphs: false,\n data_points: 100,\n date_from: moment(new Date()).startOf('day').unix(),\n date_to: moment(new Date()).endOf('day').unix(),\n graph_size: 'medium',\n },\n sensors: []\n })\n if (views && views?.length > 0) {\n /**\n * The order is very important here, otherwise the reflected object isn't mapped\n * correctly in memory, causing different components to use different objects.\n * Thus, causing different sources of truth, which is not what we want (at all).\n */\n setAllViews(views)\n analyticsStore.setViewData(views[activeViewIndex])\n // VERY IMPORTANT! Set the currently selected preset as selected!\n setViewData(analyticsStore.getViewData())\n }\n })\n setLoading(false)\n }\n }, [\n activeViewIndex,\n analyticsStore,\n siteStore,\n authStore,\n siteId\n ])\n\n const sensorsGroupedByMeasurementType = analyticsStore.getSensorsGroupedByMeasurementType()\n return (\n \n {loading &&\n \n }\n {siteData?.name && siteData?.cages?.length ?\n <>\n \n \n

\n \n \n analyticsStore.toggleDarkMode()}\n />\n analyticsStore.toggleGraphGrid()}\n />\n\n \n \n Analytics for {siteData?.name}\n {viewData?.sensors?.length > 0 && (\n \n {viewData?.sensors?.length} {viewData?.sensors?.length > 1 ? 'sensors' : 'sensor'} selected\n \n }\n content=\"Displays the number of selected measurements from the list on the right\"\n />\n )}\n

\n
\n \n
\n {viewData?.sensors?.length > 0\n ?\n <>\n \n \n {viewData?.graph_settings?.grouped_graphs === false\n ?\n // Single Graphs\n viewData?.sensors?.map((sensor: any, sensorIndex: number) => {\n return (\n \n \n \n )\n })\n :\n /*\n * Grouped Graphs (by sensor reading type)\n * We need to iterate a grouped object list measurement type and the respective\n * sensor in that list, and then output the remaining sensors \n * that can't be grouped as single graphs.\n */\n Object.keys(sensorsGroupedByMeasurementType)?.map((measurementType: string, measurementIndex: any) => {\n return (\n \n \n \n )\n })\n }\n \n \n :\n \n \n Click \"My sensors\" on the right and select some sensors from list to get started.\n \n \n }\n \n
\n {/* Sensor sidebar button toggle */}\n toggleSensorList()}\n color='green'\n >\n \n \n {` My sensors (${numberOfSensors(siteData)})`}\n \n \n }\n content='Click to show/hide the sensor sidebar list'\n position='bottom left'\n />\n {/* Sensor sidebar that lists all the sensors for the selected site */}\n {sensorListVisible && (\n \n )}\n \n :\n
\n \n
\n }\n \n )\n})\n\nexport default Analytics2","import { OXYGEN_SENSOR_TYPE, SALINITY_SENSOR_TYPE, TILT_SENSOR_TYPE, TURBIDITY_SENSOR_TYPE } from './types';\n\nconst hexColors = {\n green: '#2B9C6A',\n teal: '#00B5AD',\n yellow: '#FFC83B',\n red: '#D4484B',\n pink: '#ff40c9',\n orange: '#ea8843',\n sunglow: '#ffc83b',\n xanadu: '#6b7d5f',\n gold: '#8e7f49',\n cgBlue: '#337793',\n maximumBlue: '#48b8d0',\n middleBlue: '#59bed4',\n darkBlue: '#0E1A2B',\n menuBlue: '#162840',\n glue: '#1d3556',\n grey: '#ccc',\n};\n\nconst getColor = (sensorType: string, hex?: boolean) => {\n let color: string = '#000000';\n switch (sensorType) {\n case OXYGEN_SENSOR_TYPE:\n color = '#2B9C6A';\n\n break;\n case SALINITY_SENSOR_TYPE:\n color = '#FFFFFF';\n\n break;\n case TILT_SENSOR_TYPE:\n color = '#666';\n\n break;\n case TURBIDITY_SENSOR_TYPE:\n color = '#FFE21F';\n\n break;\n }\n return color;\n};\n\nconst getColorForSeverity = (level: number) => {\n switch (level) {\n default:\n return hexColors.grey;\n case 0:\n return '#2b9c6a';\n case 1:\n return hexColors.yellow;\n case 2:\n return hexColors.red;\n }\n};\n\nconst graphSecondaryColors: string[] = ['#FF976f', '#FF8CD7', '#FFD700', '#00FF00', '#00FFFF'];\nconst getGraphColor = function (index: number): string {\n if (index < graphSecondaryColors.length) {\n return graphSecondaryColors[index];\n }\n return getGraphColor(index - graphSecondaryColors.length);\n};\n\nexport default hexColors;\nexport { getColor, getGraphColor, getColorForSeverity };\n","import { extend, ReactThreeFiber } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nconst vertexShader = `varying vec3 vColor;\n\nvarying float vY;\n\nvoid main()\n{\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vY = worldPosition.y;\n gl_Position = projectionMatrix * viewMatrix * worldPosition;\n}`;\n\nconst fragmentShader = `precision mediump float;\n\nconst vec4 okColor=vec4(0.169,0.612,0.416,0.9);\nconst vec4 warningColor=vec4(1.,0.784,0.231,0.9);\nconst vec4 criticalColor=vec4(0.831,0.282,0.294,0.9);\nconst vec4 inactiveColor=vec4(0.8,0.8,0.8,1.0);\n\nvarying float vY;\n\nuniform float depth1;\nuniform float depth2;\nuniform float depth3;\nuniform float depth4;\n\nuniform float maxDepth;\n\nuniform int depth1Severity;\nuniform int depth2Severity;\nuniform int depth3Severity;\nuniform int depth4Severity;\n\n\nuniform float transitionHeight;\n\n\nvec4 pickColor(in int status);\n\nvec4 pickColor(in int status){\n vec4 color = inactiveColor;\n if (status == 0){\n color = okColor;\n }else if (status == 1){\n color = warningColor;\n }else if (status == 2){\n color = criticalColor;\n }else{\n color = inactiveColor;\n }\n return(color);\n}\n\nfloat findTransitionStart(in float firstDepth, in float secondDepth,in float transitionHeight);\n\nfloat findTransitionStart(in float firstDepth, in float secondDepth,in float transitionHeight){\n return (-((firstDepth+secondDepth)/2.0)+ (transitionHeight/2.0));\n}\n\nfloat findTransitionEnd(in float firstDepth, in float secondDepth,in float transitionHeight);\n\nfloat findTransitionEnd(in float firstDepth, in float secondDepth,in float transitionHeight){\n return (-((firstDepth+secondDepth) / 2.0) - (transitionHeight / 2.0));\n}\n\n\nvoid main()\n{ \n float trans1Start = findTransitionStart(depth1,depth2,transitionHeight);\n float trans1End = findTransitionEnd(depth1,depth2,transitionHeight);\n\n float trans2Start = findTransitionStart(depth2,depth3,transitionHeight);\n float trans2End = findTransitionEnd(depth2,depth3,transitionHeight);\n\n float trans3Start = findTransitionStart(depth3,depth4,transitionHeight);\n float trans3End = findTransitionEnd(depth3,depth4,transitionHeight);\n\n if (vY > trans1Start) {\n gl_FragColor = pickColor(depth1Severity);\n } else if (vY > trans1End){\n float p = ((trans1End - vY) /transitionHeight);\n gl_FragColor = mix(pickColor(depth2Severity), pickColor(depth1Severity), p);\n } else if (vY > trans2Start) {\n gl_FragColor = pickColor(depth2Severity);\n } else if (vY > trans2End) {\n float p = ((trans2End - vY) / (transitionHeight));\n gl_FragColor = mix(pickColor(depth3Severity), pickColor(depth2Severity), p);\n } else if (vY > trans3Start) {\n gl_FragColor = pickColor(depth3Severity);\n } else if (vY > trans3End) {\n float p = ((trans3End - vY) / (transitionHeight));\n gl_FragColor = mix(pickColor(depth4Severity), pickColor(depth3Severity), p);\n } else if (vY > -maxDepth){\n gl_FragColor = pickColor(depth4Severity);\n } else {\n gl_FragColor = inactiveColor;\n }\n}`;\n\nexport class Cage4DepthMaterial extends THREE.ShaderMaterial {\n constructor() {\n super({\n uniforms: {\n depth1: { value: 5.0 },\n depth2: { value: 15.0 },\n depth3: { value: 25.0 },\n depth4: { value: 35.0 },\n maxDepth: { value: 45.0 },\n\n transitionHeight: { value: 1.0 },\n\n hovered: { value: false },\n\n depth1Severity: { value: -1 },\n depth2Severity: { value: -1 },\n depth3Severity: { value: -1 },\n depth4Severity: { value: -1 },\n },\n transparent: true,\n\n vertexShader: vertexShader,\n fragmentShader: fragmentShader,\n });\n }\n\n get depth1() {\n return this.uniforms.depth1.value;\n }\n\n set depth1(v) {\n this.uniforms.depth1.value = v;\n }\n\n get depth2() {\n return this.uniforms.depth2.value;\n }\n\n set depth2(v) {\n this.uniforms.depth2.value = v;\n }\n\n get depth3() {\n return this.uniforms.depth3.value;\n }\n\n set depth3(v) {\n this.uniforms.depth3.value = v;\n }\n\n get depth4() {\n return this.uniforms.depth4.value;\n }\n\n set depth4(v) {\n this.uniforms.depth4.value = v;\n }\n\n get depth1Severity() {\n return this.uniforms.depth1Severity.value;\n }\n\n set depth1Severity(v) {\n this.uniforms.depth1Severity.value = v;\n }\n\n get depth2Severity() {\n return this.uniforms.depth2Severity.value;\n }\n\n set depth2Severity(v) {\n this.uniforms.depth2Severity.value = v;\n }\n\n get depth3Severity() {\n return this.uniforms.depth3Severity.value;\n }\n\n set depth3Severity(v) {\n this.uniforms.depth3Severity.value = v;\n }\n\n get depth4Severity() {\n return this.uniforms.depth4Severity.value;\n }\n\n set depth4Severity(v) {\n this.uniforms.depth4Severity.value = v;\n }\n get hovered() {\n return this.uniforms.hovered.value;\n }\n\n set hovered(v) {\n this.uniforms.hovered.value = v;\n }\n\n get transitionHeight() {\n return this.uniforms.transitionHeight.value;\n }\n\n set transitionHeight(v) {\n this.uniforms.transitionHeight.value = v;\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n cage4DepthMaterial: ReactThreeFiber.Object3DNode;\n }\n }\n}\n\nextend({ Cage4DepthMaterial });\n","import { useGLTF } from '@react-three/drei';\nimport { useLoader } from '@react-three/fiber';\nimport rgba from 'color-normalize';\nimport { useRef, useEffect, useState } from 'react';\nimport * as THREE from 'three';\nimport { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\n\nimport hexColors from '../../../lib/colors';\nimport { CageContents, LICE_SKIRT, SensorLocationContents, SINKER_TUBE } from '../../../lib/types';\nimport '../Materials/Cage4DepthMaterial';\n\ntype BunnringGLTFResult = GLTF & {\n nodes: {\n Torus: THREE.Mesh;\n };\n materials: {};\n};\n\ninterface BottomRingProps {\n color: [number, number, number];\n}\n\nconst BottomRingSetup = ({ color }: BottomRingProps) => {\n const group = useRef();\n const { nodes } = useGLTF('Models/bunnring.glb') as BunnringGLTFResult;\n\n return (\n \n \n \n \n \n );\n};\n\ntype ShieldingSkirtGLTFResult = GLTF & {\n nodes: {\n Torus001: THREE.Mesh;\n };\n materials: {};\n};\n\ninterface ShieldingSkirtProps {\n color: [number, number, number];\n}\n\nconst ShieldingSkirtSetup = (props: ShieldingSkirtProps) => {\n const group = useRef();\n const { nodes } = useGLTF('Models/ShieldingSkirt.glb') as ShieldingSkirtGLTFResult;\n\n return (\n \n \n \n \n \n );\n};\n\ntype CageGLTFResult = GLTF & {\n nodes: {\n Cage: THREE.Mesh;\n AnchorPointNE: THREE.Mesh;\n AnchorPointNW: THREE.Mesh;\n AnchorPointSE: THREE.Mesh;\n AnchorPointSW: THREE.Mesh;\n Nett: THREE.Mesh;\n Walkway: THREE.Mesh;\n };\n materials: {};\n};\n\ninterface CageProps {\n cageData: CageContents;\n}\n\nconst Cage = ({ cageData }: CageProps) => {\n const group = useRef();\n const { nodes } = useGLTF('Models/Cage_Polarcirkel_withNett.glb') as CageGLTFResult;\n\n const netTexture = useLoader(THREE.TextureLoader, 'CageNet.png');\n netTexture.wrapS = netTexture.wrapT = THREE.RepeatWrapping;\n netTexture.repeat.set(10, 10);\n\n const [okColor] = useState(rgba(hexColors.green));\n const [warningColor] = useState(rgba(hexColors.yellow));\n const [criticalColor] = useState(rgba(hexColors.red));\n const [inactiveColor] = useState(rgba(hexColors.grey));\n\n const [depth1Severity, setDepth1Severity] = useState(-1);\n const [depth2Severity, setDepth2Severity] = useState(-1);\n const [depth3Severity, setDepth3Severity] = useState(-1);\n const [depth4Severity, setDepth4Severity] = useState(-1);\n const [ringSeverity, setRingSeverity] = useState(-1);\n const [skirtSeverity, setSkirtSeverity] = useState(-1);\n\n useEffect(() => {\n cageData.sensor_locations.forEach((sensorLoc: SensorLocationContents) => {\n var hasNoSensors = sensorLoc.sensors.length === 0;\n var level = hasNoSensors ? -1 : sensorLoc.status.level;\n if (sensorLoc.meta.type === 'depth') {\n var depth = sensorLoc.meta.max_depth - 5;\n switch (depth) {\n case 5:\n setDepth1Severity(level);\n break;\n case 15:\n setDepth2Severity(level);\n break;\n case 25:\n setDepth3Severity(level);\n break;\n case 35:\n setDepth4Severity(level);\n break;\n default:\n }\n } else if (sensorLoc.meta.type === SINKER_TUBE) {\n setRingSeverity(level);\n } else if (sensorLoc.meta.type === LICE_SKIRT) {\n setSkirtSeverity(level);\n }\n });\n }, [cageData, okColor, warningColor, criticalColor, inactiveColor]);\n\n const getColor = (severity: number) =>\n severity === 0 ? okColor : severity === 1 ? warningColor : severity === 2 ? criticalColor : inactiveColor;\n let ringColor = getColor(ringSeverity);\n let skirtColor = getColor(skirtSeverity);\n\n return (\n \n \n {/* */}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nuseGLTF.preload('Models/Cage_Polarcirkel_withNett.glb');\nuseGLTF.preload('Models/ShieldingSkirt.glb');\nuseGLTF.preload('Models/bunnring.glb');\n\nexport default Cage;\n","import * as THREE from 'three';\nimport { extend, ReactThreeFiber } from '@react-three/fiber';\n\nexport class OceanMaterial extends THREE.ShaderMaterial {\n constructor() {\n super({\n uniforms: {\n oceanColor: { value: [0.0, 0.0, 1.0, 1.0] },\n waveNormals: { value: undefined },\n },\n vertexShader: `varying vec3 vColor;\n\n varying float vY;\n \n void main()\n {\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vY = worldPosition.y;\n gl_Position = projectionMatrix * viewMatrix * worldPosition;\n }`,\n fragmentShader: `precision mediump float;\n\n varying float vY;\n\n uniform vec4 oceanColor;\n uniform sampler2D waveNormals;\n\n void main()\n {\n gl_FragColor = oceanColor;\n }`,\n });\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n oceanMaterial: ReactThreeFiber.Object3DNode;\n }\n }\n}\n\nextend({ OceanMaterial });\n","import { MeshProps } from '@react-three/fiber';\n// import React, { useRef, useMemo } from 'react'\nimport { ReactThreeFiber, extend, useLoader, useFrame } from '@react-three/fiber';\nimport { FC, useRef } from 'react';\nimport * as THREE from 'three';\nimport { MeshPhysicalMaterial } from 'three';\nimport { Water } from 'three-stdlib';\n\nimport '../Materials/OceanMaterial';\n\nextend({ Water });\n\nconst OceanPlane: FC = (props) => {\n const waterNormals = useLoader(THREE.TextureLoader, './WaterNormals.png');\n // const [offset, setOffset] = useState(0);\n\n const ref = useRef(null);\n\n waterNormals.wrapS = waterNormals.wrapT = THREE.RepeatWrapping;\n waterNormals.repeat.set(20, 20);\n\n // useFrame((state, delta) => setOffset(offset + delta * 0.01));\n // waterNormals.offset.set(1, offset);\n\n useFrame((state, delta) => ref.current?.normalMap?.offset.set(0, ref.current.normalMap.offset.y + delta * 0.01));\n\n return (\n // \n // \n // \n\n \n \n \n \n );\n};\n\n// function Ocean() {\n// const ref = useRef();\n// // const gl = useThree((state) => state.gl);\n// const waterNormals = useLoader(THREE.TextureLoader, './WaterNormals.png')\n// waterNormals.wrapS = waterNormals.wrapT = THREE.RepeatWrapping\n// const geom = useMemo(() => new THREE.PlaneGeometry(2048, 2048), [])\n// const config = useMemo(\n// () => ({\n// textureWidth: 512,\n// textureHeight: 512,\n// waterNormals,\n// sunDirection: new THREE.Vector3(),\n// sunColor: 0xffffff,\n// waterColor: 0x009dc4,\n// distortionScale: 0.2,\n// fog: true\n// }), [waterNormals])\n\n// useFrame((state, delta) => (ref.current.material.uniforms.time.value += delta * 0.1))\n// return \n\n// }\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n water: ReactThreeFiber.Object3DNode;\n }\n }\n}\n\nexport default OceanPlane;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport {\n LineChart,\n ResponsiveContainer,\n Line,\n YAxis,\n XAxis,\n Tooltip,\n Label,\n Legend,\n\n CartesianGrid,\n} from 'recharts';\n\nimport { getSensorName, getUnit } from '../lib/format';\nimport {\n DEPTH_MEASUREMENT_TYPE,\n OXYGEN_MEASUREMENT_TYPE,\n TEMPERATURE_MEASUREMENT_TYPE,\n TILT_MEASUREMENT_TYPE,\n Timeline,\n TimelineData,\n TimelineGraphProps,\n} from '../lib/types';\n\ninterface YaxisProps {\n measurement: string;\n domain: any[];\n showLabels: boolean;\n label: string;\n dx: number;\n inverted: boolean;\n ticks: number[];\n}\n\nconst formatTickYAxis = (seconds: any) => {\n return new Date(seconds * 1000).toLocaleString('nb-NO');\n};\n\nconst getYaxisDomainFromTimeline = (timeline: Timeline[], measurement: string) => {\n var relevantTimelines: Timeline[] = timeline.filter((tl) => tl.measurement_type === measurement);\n return findYaxisDomainFromTimeline(relevantTimelines, measurement);\n};\n\nconst padDomain = (min: number, max: number, measurement: string) => {\n let range: number = max - min;\n let padding = range * 0.1;\n switch (measurement) {\n case OXYGEN_MEASUREMENT_TYPE:\n return [min - padding, max + padding];\n case TEMPERATURE_MEASUREMENT_TYPE:\n return [min - padding, max + padding];\n case TILT_MEASUREMENT_TYPE:\n return [min - padding, max + padding];\n case DEPTH_MEASUREMENT_TYPE:\n return [min - padding > 0 ? min - padding : -1, max + padding];\n }\n return [min, max];\n};\n\nconst findYaxisDomainFromTimeline = (timeline: Timeline[], mT: string) => {\n if (!timeline || timeline.length === 0) {\n return ['dataMin', 'dataMax'];\n }\n var min: number = Infinity;\n var max: number = -Infinity;\n timeline.forEach((tl) => {\n const values = tl.data.map((value: TimelineData) => value.value);\n var tlMin: number = Math.min(...values);\n var tlMax: number = Math.max(...values);\n if (tlMin < min) {\n min = tlMin;\n }\n if (tlMax > max) {\n max = tlMax;\n }\n });\n\n return padDomain(min, max, mT);\n};\n\nconst calculateTicks = (min: number, max: number, interval: number, measurement: string) => {\n const padding = padDomain(min, max, measurement);\n const padMin = padding[0];\n const padMax = padding[1];\n const ticks = [];\n const step = (padMax - padMin) / (interval - 1);\n if (step === 0) {\n ticks.push(padMin)\n ticks.push(padMax)\n return ticks\n }\n for (let i = padMin; i <= padMax; i = i + step) {\n ticks.push(i);\n }\n\n return ticks;\n};\n\nconst makeYaxies = (timeline: Timeline[], inverted: boolean) => {\n var groupedTimelines = new Map();\n\n timeline\n .filter((tl) => tl.data.length > 0)\n .forEach((tl) => {\n if (!groupedTimelines.has(tl.measurement_type)) {\n groupedTimelines.set(tl.measurement_type, [tl]);\n } else {\n groupedTimelines.get(tl.measurement_type)?.push(tl);\n }\n });\n var yaxisProps: YaxisProps[] = [];\n let dx: number = groupedTimelines.size > 1 ? 0 : -20;\n groupedTimelines.forEach((timelines: Timeline[], key: string) => {\n const values = timelines.flatMap((t) => t.data).map((d) => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n const ticks = calculateTicks(min, max, 5, key);\n yaxisProps.push({\n measurement: key,\n domain: getYaxisDomainFromTimeline(timeline, key),\n showLabels: true,\n label: _.capitalize(key === 'pitch' ? 'tilt' : key),\n dx: dx,\n inverted: inverted,\n ticks: ticks,\n });\n });\n return (\n <>\n {yaxisProps\n .filter((props) => props.measurement)\n .map((props: YaxisProps) => {\n return (\n tick.toFixed(1)}\n reversed={props.measurement === 'depth'}\n domain={props.domain ? props.domain : undefined}\n label={\n \n }\n >\n );\n })}\n \n );\n};\n\nconst TimelineGraph = observer(({ timeline, hideXaxis, dx, inverted }: TimelineGraphProps) => {\n // const [refAreaLeft, setRefAreaLeft] = useState();\n // const [refAreaRight, setRefAreaRight] = useState();\n if (timeline.length === 0) {\n return <>;\n }\n return (\n <>\n {/* Display a zoom out button if the graph has been zoomed in */}\n\n {\n \n {\n // if (e) {\n // setRefAreaLeft(e.activeLabel);\n // }\n // }}\n // onMouseMove={(e: any) => {\n // if (e && refAreaLeft) {\n // setRefAreaRight(e.activeLabel);\n // }\n // }}\n // onMouseUp={(e: any) => {\n // if (!refAreaLeft || !refAreaRight || refAreaLeft === refAreaRight) {\n // setRefAreaLeft(undefined);\n // setRefAreaRight(undefined);\n // return;\n // } else if (refAreaLeft > refAreaRight) {\n // setXDomain([refAreaRight, refAreaLeft]);\n // } else {\n // setXDomain([refAreaLeft, refAreaRight]);\n // }\n // setRefAreaLeft(undefined);\n // setRefAreaRight(undefined);\n // }}\n >\n \n {timeline.map((tl, index) => {\n let name =\n (tl.sensorName ? tl.sensorName : getSensorName(tl.sensor_type, tl.sensor_id, tl.sensorName)) +\n ' - ' +\n (tl.measurement_type === 'pitch' ? 'tilt' : tl.measurement_type);\n return (\n <>\n \n {timeline.length === 1 ? (\n (\n \n {tl.data.length > 0 ? tl.data[tl.data.length - 1].value.toFixed(2) : ''}\n \n )}\n />\n ) : null}\n \n );\n })}\n {timeline ? makeYaxies(timeline, inverted) : null}\n {timeline && timeline.flatMap((tl) => tl.data).length > 0 ? (\n <>\n \n {\n return [value.toFixed(2), name];\n }}\n contentStyle={{ backgroundColor: '#2F4858' }}\n />\n \n ) : null}\n \n \n }\n \n );\n});\n\nexport default TimelineGraph;\n","export default __webpack_public_path__ + \"static/media/sensorNew.11fd3c41.svg\";","import { useState } from 'react';\nimport { Image } from 'semantic-ui-react';\n\nimport { getColor } from '../../lib/colors';\nimport sensorImg from '../../sensorNew.svg';\n\ninterface SensorIconProps {\n sensorType: string;\n scale?: number;\n rotation?: number,\n top?: string;\n marginLeft?: string;\n}\n\nconst SensorIcon = ({ sensorType, scale = 0.4, rotation = 90, top = '4px', marginLeft = '20px' }: SensorIconProps) => {\n const [visible, setVisible] = useState(true);\n\n return sensorType ? (\n setVisible(!visible)}\n style={{\n zIndex: 1,\n width: 0,\n marginLeft: marginLeft,\n height: 0,\n top: top,\n cursor: 'none',\n transform: `scale(${scale}) rotate(${rotation}deg)`,\n }}\n >\n \n\n \n \n \n \n ) : null;\n};\n\nexport default SensorIcon;\n","import { Fragment, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Message, Icon, Loader, Table, Segment, Button, Container, Dropdown } from 'semantic-ui-react';\nimport useSWR from 'swr';\n\nimport TimelineGraph from '../TimelineGraph';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { getSensorDepth, getSensorName, getSensorSegment } from '../../lib/format';\nimport { CageContents, CageGraphProps, SensorContents, SensorLocationContents, Timeline } from '../../lib/types';\nimport SensorIcon from '../UIElements/SensorIcon';\nimport { getColor } from '../../lib/colors';\nimport useStore from '../../Store/Store';\nimport { observer } from 'mobx-react';\n\ninterface CageMeasurementHistory {\n cage: CageContents;\n sensor_location_history: SensorLocationHistory[];\n}\ninterface SensorLocationHistory {\n sensor_location: SensorLocationContents;\n measurement_history: Timeline[];\n}\n\ninterface SensorHistory {\n sensor_id: number;\n sensor_type: string;\n timelines: Timeline[];\n}\n\n\nconst MakeSlMeasurementGraph = (\n sensor_key: string,\n sensorName: string,\n slDepth: string,\n sensorSegment: string,\n sh: SensorHistory,\n sampleSize: number,\n hours: number,\n setMenuRightVisible: any,\n history: any\n) => {\n let sensorDisplayName = getSensorName(sh.sensor_type, sh.sensor_id, sensorName);\n\n return (\n \n \n \n \n \n \n
\n {sensorDisplayName} | {slDepth}\n {' | '}\n {sensorSegment}\n
\n
\n \n {\n setMenuRightVisible(false);\n history.push('/analytics/' + sensor_key);\n }}\n >\n \n Analytics\n \n \n
\n {sh.timelines.map((tl: Timeline) => (\n \n ))}\n
\n
\n
\n );\n};\n\nconst GroupSensorsFromMeasurementHistory = (measurementHistory: Timeline[]) => {\n let groupedSensors: SensorHistory[] = [];\n measurementHistory.forEach((tl: Timeline) => {\n let sensor: SensorHistory | undefined = groupedSensors.find(\n (sh: SensorHistory) => sh.sensor_id === tl.sensor_id && sh.sensor_type === tl.sensor_type\n );\n if (sensor) {\n sensor.timelines.push(tl);\n } else {\n groupedSensors.push({\n sensor_id: tl.sensor_id,\n sensor_type: tl.sensor_type,\n timelines: [tl],\n });\n }\n });\n return groupedSensors;\n};\n\nconst MakeSlCageGraphGrid = (slH: SensorLocationHistory, setMenuRightVisible: any, history: any) => {\n let slDepth: string = getSensorDepth(slH.sensor_location.meta);\n let sensorSegment: string = getSensorSegment(slH.sensor_location.meta).label;\n\n slH.measurement_history.sort((a: Timeline, b: Timeline) => {\n if (a.sensor_id === b.sensor_id) {\n if (a.sensor_type === b.sensor_type) {\n return a.measurement_type > b.measurement_type ? 1 : -1;\n } else {\n return a.sensor_type > b.sensor_type ? 1 : -1;\n }\n } else {\n return a.sensor_id > b.sensor_id ? 1 : -1;\n }\n });\n //add color\n slH.measurement_history.forEach((tl: Timeline) => {\n tl.color = getColor(tl.sensor_type);\n });\n let groupedSensors: SensorHistory[] = GroupSensorsFromMeasurementHistory(slH.measurement_history);\n const slMeasurementGraphs = []\n\n slMeasurementGraphs.push(...groupedSensors.map((sh: SensorHistory) => {\n let sensor: SensorContents | undefined = slH.sensor_location.sensors.find(\n (sensor) => sensor.sensor_id === sh.sensor_id && sensor.sensor_type === sh.sensor_type\n );\n let sensorKey: string = sensor && sensor !== null ? sensor.node_key : sh.sensor_type + '-' + sh.sensor_id;\n\n let sensorName: string = sensor && sensor !== null ? sensor.name : '';\n\n return MakeSlMeasurementGraph(\n sensorKey,\n sensorName,\n slDepth,\n sensorSegment,\n sh,\n 100,\n 24,\n setMenuRightVisible,\n history\n );\n }))\n\n return (\n \n {slMeasurementGraphs}\n \n );\n};\n\nconst orderSensorLocationHistory = (a: SensorLocationHistory, b: SensorLocationHistory) => {\n if (a.sensor_location.meta.max_depth === b.sensor_location.meta.max_depth) {\n return a.sensor_location.meta.left_border > b.sensor_location.meta.left_border ? 1 : -1;\n } else {\n return a.sensor_location.meta.max_depth > b.sensor_location.meta.max_depth ? 1 : -1;\n }\n}\n\nconst CageGraphGrid = observer(({ cageId, sampleSize, setMenuRightVisible }: CageGraphProps) => {\n const { siteStore, authStore } = useStore();\n const siteKey: string | undefined = siteStore.getSiteKey();\n const history = useHistory();\n const [hours, setHours] = useState(24);\n const { data, error } = useSWR(\n siteKey && cageId ? '/api/v1/site/' + siteKey + '/cage/' + cageId + '/measurement/hour/' + hours + '' : null,\n (url) => AuthFetcher(url, authStore.getTokenFunction()),\n {\n refreshInterval: 5000,\n }\n );\n if (!data) {\n return ;\n }\n if (error) {\n return An error has occured.Please reload the page;\n }\n const cmh: CageMeasurementHistory = data;\n\n if (cmh === undefined) {\n return <>\n }\n\n\n const slHistory = []\n if (cmh.sensor_location_history) {\n cmh.sensor_location_history.sort(orderSensorLocationHistory)\n\n let mapped = cmh.sensor_location_history.map((slHist: SensorLocationHistory) => MakeSlCageGraphGrid(slHist, setMenuRightVisible, history))\n slHistory.push(...mapped)\n }\n\n if (cmh.cage) {\n\n return (\n <>\n \n {\n if (typeof value === 'number') setHours(value);\n }}\n >\n \n {slHistory}\n \n\n )\n }\n\n return (\n <>\n \n \n This cage does not have any measurements\n \n \n );\n});\ninterface MeasurementsProps {\n measurements: Timeline[];\n samples: number;\n hours: number;\n}\nconst Measurements = ({ measurements, samples, hours }: MeasurementsProps) => {\n\n return (\n \n \n {measurements.map((measurement: Timeline, index: number) => (\n \n ))}\n \n \n );\n};\n\ninterface CageGraphElementProps {\n timeline: Timeline;\n highlight?: boolean;\n samples: number;\n redLine?: number;\n yellowLine?: number;\n referenceLinePercentage?: number;\n}\n\nconst MeasurementGraph = ({ timeline, referenceLinePercentage }: CageGraphElementProps) => {\n return (\n \n {timeline ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default CageGraphGrid;\n","import React, { useState, useEffect, Fragment } from 'react';\nimport { Range } from 'react-range';\nimport { Accordion, Grid, Icon, Label, Container, Segment, Message, Header } from 'semantic-ui-react';\nimport { getSensorDepth } from '../../lib/format';\n\nimport { CageAlarmProps, AlarmMeasurementProps, CageContents } from '../../lib/types';\n\ninterface CageOverviewAlarmsProps {\n cage: CageContents;\n className?: string;\n}\n\nconst CageOverviewAlarms = ({ cage, className }: CageOverviewAlarmsProps) => {\n const [alarms, setAlarms] = useState([]);\n useEffect(() => {\n const alarms = cage.sensor_locations\n .map((sensorLocation) => {\n return sensorLocation.scenario_status.map((scenarioStatus) => {\n let alarm = sensorLocation.scenarios.find((alarm) => alarm.node_key === scenarioStatus.node_key);\n let warningTrigger = Math.round(alarm ? alarm.trigger.warning_trigger_distance : 75);\n let criticalTrigger = 100;\n let values = [\n warningTrigger,\n criticalTrigger,\n Math.round(scenarioStatus.min_trigger_distance),\n Math.round(scenarioStatus.max_trigger_distance),\n Math.round(scenarioStatus.prev_trigger_distance),\n Math.round(scenarioStatus.trigger_distance),\n ];\n //let values = [warningTrigger, criticalTrigger,25,50,100,0];\n return {\n label: scenarioStatus.name,\n position: getSensorDepth(sensorLocation.meta),\n values: values,\n level: scenarioStatus.severity.level,\n measurements: scenarioStatus.measurements,\n depth: sensorLocation.meta.max_depth - 5,\n locationId: sensorLocation.node_key,\n warning: warningTrigger,\n critical: criticalTrigger,\n description: scenarioStatus.description,\n alarm: alarm,\n };\n });\n })\n .flat()\n .sort((a, b) => {\n if (a.depth === b.depth) {\n if (a.label === b.label) {\n return a.values[5] > b.values[5] ? -1 : 1;\n }\n return a.label > b.label ? 1 : -1;\n }\n if (a.depth === -1) {\n return 1;\n }\n return a.depth > b.depth ? 1 : -1;\n });\n\n setAlarms(alarms);\n }, [cage]);\n\n const onScroll = () => {\n setShadows();\n };\n const setShadows = () => {\n const alarmContainer = document.getElementById('alarmcontainer');\n if (alarmContainer) {\n const offset = alarmContainer.scrollHeight - alarmContainer.offsetHeight - alarmContainer.scrollTop;\n const opasity = offset > 100 ? 1 : offset <= 0 ? 0 : offset / 100;\n alarmContainer.style.boxShadow = `inset -10px -50px 50px -35px rgba(0, 0, 0, ${opasity})`;\n }\n };\n\n return (\n \n {/*
Alarms
*/}\n \n {alarms.length ? (\n \n {alarms.map((alarm, index) => {\n return (\n \n );\n })}\n \n ) : (\n \n \n This cage does not have any alarms\n \n )}\n \n
\n );\n};\n\nconst CageAlarm = (alarm: CageAlarmProps) => {\n useEffect(() => {\n alarm.setShadows && alarm.setShadows();\n }, [alarm]);\n\n const min = -1; //TODO: This is a band-aid fix for now, look into better ways to handle impossible values\n const max = 105;\n var marginLeft: string = 0.95 * alarm.values[2] + '%';\n var marginRight: string = 100 - 0.95 * alarm.values[3] + '%';\n\n return (\n \n \n \n \n
\n {alarm.label}\n
\n
\n \n \n \n \n \n \n \n {}}\n min={min}\n max={max}\n step={1}\n allowOverlap={true}\n renderTrack={({ props, children }) => (\n \n {children}\n\n \n \n \n \n )}\n renderThumb={({ props, value, index }) => {\n props.style.cursor = 'auto';\n var show: boolean = index === 5;\n return (\n
\n \n
\n );\n }}\n />\n
\n
\n
\n
\n );\n};\n\ninterface TriggerDistanceIconProps {\n prevTriggerDistance: number;\n triggerDistance: number;\n show: boolean;\n}\n\nconst TriggerDistanceIcon = (props: TriggerDistanceIconProps) => {\n if (props.show) {\n return ;\n } else {\n return ;\n }\n};\n\ninterface TriggerDistanceProps {\n prevTriggerDistance: number;\n triggerDistance: number;\n}\n\nconst MainThumbIcon = (props: TriggerDistanceProps) => {\n var diff: number = props.triggerDistance - props.prevTriggerDistance;\n if (diff > 10) {\n return (\n \n \n \n \n );\n } else if (diff > 2) {\n return (\n \n \n \n \n );\n } else if (diff < -10) {\n return (\n \n \n \n \n );\n } else if (diff < -2) {\n return (\n \n \n \n \n );\n }\n // Default fallback if no of the rules above match\n return (\n \n \n \n \n );\n};\n\nconst getUnit = (measurementType: string) => {\n switch (measurementType) {\n default:\n return measurementType;\n case 'oxygen':\n return '%';\n case 'temperature':\n return 'C\\u00b0';\n case 'depth':\n return 'm';\n case 'pitch':\n return '\\u00b0';\n }\n};\n\nconst AlarmMeasurementDisplay = (props: AlarmMeasurementProps) => {\n console.log(props);\n return (\n \n {props.measurements &&\n props.measurements.length &&\n props.measurements?.map((pair, index) => {\n return (\n \n {pair.measurement.toFixed(0)}\n {getUnit(pair.type)}\n \n );\n })}\n \n );\n};\n\nexport default CageOverviewAlarms;\n","import { Plane, OrbitControls, Sky } from '@react-three/drei';\nimport { Canvas } from '@react-three/fiber';\nimport { observer } from 'mobx-react';\nimport { useRef, Suspense, useState, useEffect } from 'react';\nimport { Range, getTrackBackground } from 'react-range';\nimport { useHistory } from 'react-router-dom';\nimport { Button, Segment, Grid, Tab, Icon, Dropdown } from 'semantic-ui-react';\nimport useSWR, { Key } from 'swr';\nimport * as THREE from 'three';\n\nimport Cage from '../Components/3D/Objects/CageOverviewCage';\nimport OceanPlane from '../Components/3D/Objects/OceanPlane';\nimport CageGraphGridNew from '../Components/CageOverview/CageGraphGridNew';\nimport CageOverviewAlarms from '../Components/CageOverview/CageOverviewAlarms';\nimport { AuthFetcher } from '../lib/fetch';\nimport { CageContents, SensorInspectProps, CageProps } from '../lib/types';\nimport useStore from '../Store/Store';\n\nconst timeZones = ['Europe/Oslo'];\n\ninterface CagePaneProps {\n siteKey: string | undefined;\n cage: CageContents;\n currentTimeView: string;\n setCurrentTimeView: React.Dispatch>;\n currentTimeValue: number;\n setCurrentTimeValue: React.Dispatch>;\n setMenuRightVisible: any;\n handleRouteChange: ({ sensorType, sensorID, measurement, unit, time }: SensorInspectProps) => void;\n}\n\ninterface OverviewProps {\n match?: any;\n setMenuRightVisible: any;\n}\n\nconst CageOverview = observer(({ match, setMenuRightVisible }: OverviewProps) => {\n const { params } = match || {};\n const [cages, setCages] = useState([]);\n const [cage, setCage] = useState();\n const [cageId, setCageId] = useState(params?.cageID ? params.cageID : 0);\n const [activeIndex, setActiveIndex] = useState(0);\n const [currentTimeView, setCurrentTimeView] = useState('Hour');\n const [currentTimeValue, setCurrentTimeValue] = useState(100);\n const history = useHistory();\n const { appStore, siteStore, authStore } = useStore();\n\n const siteID: string = match?.params?.siteID || siteStore.getSiteKey();\n const [url, setUrl] = useState(null);\n\n const { data } = useSWR(url, (url: any) => AuthFetcher(url, authStore.getTokenFunction()), {\n refreshInterval: 2000,\n });\n\n appStore.setBreadcrumb('Cage Overview');\n\n useEffect(() => {\n siteID && setUrl('/api/v1/site/' + siteID);\n }, [siteID]);\n\n useEffect(() => {\n if (params?.cageID) {\n setCageId(params.cageID);\n }\n }, [params]);\n\n useEffect(() => {\n if (data && data.cages) {\n const cages = data.cages\n .sort((a: { node_key: number }, b: { node_key: number }) => {\n return a.node_key > b.node_key ? 1 : -1;\n })\n .map((cage: any, index: any) => ({ ...cage, index: index }));\n setCages(cages);\n\n if (!cage) {\n const newCage = cageId ? cages.find((cage: { node_key: any }) => cage.node_key === cageId) : cages[0];\n if (newCage) {\n setCage(newCage);\n setCageId(newCage.node_key);\n setActiveIndex(newCage?.index ? newCage.index : 0);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n const HandleRouteChange = ({ sensorType, sensorID, measurement, unit, time }: SensorInspectProps) => {\n history.push(\n '/analytics/' +\n siteID +\n '/' +\n cage?.node_key +\n '/' +\n sensorType +\n '/' +\n sensorID +\n '/' +\n measurement +\n '/' +\n unit +\n '/' +\n time\n );\n };\n\n const onTabChange = (_: any, { activeIndex }: any) => {\n setActiveIndex(activeIndex);\n setCage(cages.find((cage) => cage.index === activeIndex));\n };\n\n const panes = cages\n .sort((a: CageContents, b: CageContents) => (a.node_key > b.node_key ? 1 : -1))\n .map((cage: CageContents, index: number) => {\n return {\n menuItem: cage.name,\n node_key: cage.node_key,\n render: () => (\n \n {cage && (\n \n )}\n \n ),\n };\n });\n var defaultActive: number = 0;\n\n if (cageId && panes) {\n panes.forEach((pane: any, index: number) => {\n if (pane.node_key === cageId) {\n defaultActive = index;\n }\n });\n }\n\n return (\n \n \n \n );\n});\n\nconst CageDisplay = ({ cage, currentTimeValue, handleRouteChange, setMenuRightVisible }: CagePaneProps) => {\n const historyOptions = [\n { text: 'Hourly', value: 'minute/60' },\n { text: 'Daily', value: 'hour/24' },\n { text: 'Weekly', value: 'hour/168' },\n { text: 'Monthly', value: 'hour/730' },\n ];\n const [selectedHistoryOption, setSelectedHistoryOption] = useState(historyOptions[0].value);\n\n const [cageId, setCageId] = useState(cage.node_key);\n\n useEffect(() => {\n if (cage && cage.node_key && cage.node_key !== cageId) {\n setCageId(cage.node_key);\n }\n }, [cage, cageId]);\n\n const [now, setNow] = useState(new Date());\n const [value, setValue] = useState(currentTimeValue);\n const [currentDate, setCurrentDate] = useState(new Date());\n const [dates, setDates] = useState([new Date(), new Date()]);\n const [time, setTime] = useState(false);\n\n const intervalRef1: { current: NodeJS.Timeout | null } = useRef(null);\n const timerRef1: { current: NodeJS.Timeout | null } = useRef(null);\n useEffect(() => {\n intervalRef1.current = setInterval(() => {\n setNow(new Date());\n }, 1000);\n return () => {\n intervalRef1.current && clearTimeout(intervalRef1.current);\n };\n }, []);\n\n useEffect(() => {\n if (!time) {\n setTime(true);\n timerRef1.current = setTimeout(() => {\n setTime(false);\n }, 1000);\n const from = new Date();\n from.setHours(from.getHours() - 1);\n setDates([from, now]);\n const newCurrentTime = dates[0].getTime() + (dates[1].getTime() - dates[0].getTime()) * (value / 100);\n const newCurrentDate = new Date(newCurrentTime);\n setCurrentDate(newCurrentDate);\n }\n }, [now, time, dates, value]);\n\n const [isPlaying, setIsPlaying] = useState(false);\n const [myInterval, setMyInterval] = useState();\n let [count, setCount] = useState(0);\n\n const play = () => {\n if (!isPlaying) {\n setIsPlaying(true);\n if (value >= 100 && !isPlaying) {\n count = 0;\n setValue(count);\n }\n const newInterval = setInterval(() => {\n count += 1;\n setCount(count);\n if (count >= 100) {\n clearInterval(newInterval);\n setIsPlaying(false);\n setValue(100);\n } else {\n setValue(count);\n }\n }, 100);\n setMyInterval(newInterval);\n } else {\n clearInterval(myInterval);\n setIsPlaying(false);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n Live\n \n  \n {dates[1].toLocaleTimeString('no-NO', { timeZone: timeZones[0] })}\n \n\n \n \n \n \n \n \n \n }\n onChange={(_: any, { value }: any) => {\n setSelectedHistoryOption(value);\n }}\n />\n \n \n \n \n \n \n {\n setValue(100);\n if (isPlaying) play();\n }}\n labelPosition=\"right\"\n color={value === 100 ? 'red' : 'grey'}\n style={{\n position: 'absolute',\n top: '-40px',\n right: '-7%',\n opacity: value === 100 ? 1 : 0.5,\n }}\n >\n Live\n \n  \n {value === 100 ? dates[1].toLocaleTimeString('no-NO', { timeZone: timeZones[0] }) : ''}\n \n\n {\n setValue(values[0]);\n //updateDates();\n }}\n onFinalChange={(values) => {\n if (isPlaying) play();\n setCount(values[0]);\n }}\n min={0}\n max={100}\n step={0.1}\n renderTrack={({ props, children }) => (\n \n {children}\n \n )}\n renderThumb={({ props }) => (\n \n \n {currentDate.toLocaleTimeString('no-NO', { timeZone: timeZones[0] }).substr(0, 5)}\n \n \n )}\n />\n \n \n \n \n \n \n \n {dates[0].toLocaleString('no-NO', {\n dateStyle: 'medium',\n timeStyle: 'short',\n hour12: false,\n timeZone: timeZones[0],\n })}\n \n \n {dates[1].toLocaleString('no-NO', {\n dateStyle: 'medium',\n timeStyle: 'short',\n hour12: false,\n timeZone: timeZones[0],\n })}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst CageCanvas = ({ cage }: CageProps) => {\n const virtualCamera = useRef();\n\n return (\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n );\n};\n\nexport default CageOverview;\n","import { extend, ReactThreeFiber } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nexport class Cage2DepthSegmentsMaterial extends THREE.ShaderMaterial {\n constructor() {\n super({\n uniforms: {\n hovered: { value: false },\n segmentStatus: { value: [-1, 0, 1, 2, -1, 0, 1, 2] },\n leftBorder: { value: [] },\n rightBorder: { value: [] },\n segLength: { value: 4 },\n transitionLength: { value: 1.0 },\n },\n\n transparent: true,\n\n vertexShader: `\n varying vec3 vColor;\n varying float vY;\n varying vec4 localPosition;\n varying vec2 vUv;\n void main()\n {\n localPosition = vec4(position, 1.0);\n vec4 worldPosition = modelMatrix * localPosition;\n gl_Position = projectionMatrix * viewMatrix * worldPosition;\n }`,\n fragmentShader: `\n #define PI 3.14159265358979323844\n const vec4 okColor=vec4(0.169,0.612,0.416,0.9);\n const vec4 warningColor=vec4(1.,0.784,0.231,0.9);\n const vec4 criticalColor=vec4(0.831,0.282,0.294,0.9);\n const vec4 inactiveColor=vec4(0.8,0.8,0.8,1.0);\n const float conv = float(PI/float(360));\n\n\n vec4 pickColor(in int status);\n\n vec4 pickColor(in int status){\n vec4 color = inactiveColor;\n if (status == 0){\n color = okColor;\n }else if (status == 1){\n color = warningColor;\n }else if (status == 2){\n color = criticalColor;\n }else{\n color = inactiveColor;\n }\n return(color);\n }\n\n\n bool inSegment(in float leftBorder,in float rightBorder,in float theta){\n return(theta>=leftBorder && theta <=rightBorder);\n }\n\n \n \n \n\n\n varying float vY;\n varying vec4 localPosition;\n\n uniform int[8] segmentStatus; \n uniform float[8] leftBorder;\n uniform float[8] rightBorder;\n uniform int segLength;\n\n uniform float transition;\n\n void main()\n { \n float theta = atan(localPosition.z, -localPosition.x);\n theta += PI;\n\n for(int i =0;i (a.left_border < b.left_border ? 1 : -1))\n .forEach((element: { left_border: any; right_border: any; level: any }) => {\n leftBorders.push(element.left_border);\n rightBorders.push(element.right_border);\n statuses.push(element.level);\n });\n\n this.uniforms.leftBorder.value = leftBorders;\n this.uniforms.rightBorder.value = rightBorders;\n this.uniforms.segmentStatus.value = statuses;\n this.uniforms.segLength.value = segments.length;\n }\n\n set colors(colors: any) {\n colors.forEach((color: any, index: number) => {\n const segment = `seg${index + 1}Color`;\n this.uniforms[segment].value = color ? color : [0, 0, 0, 0];\n });\n this.uniforms.segments.value = colors.length;\n }\n}\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n cage2DepthSegmentsMaterial: ReactThreeFiber.Object3DNode<\n Cage2DepthSegmentsMaterial,\n typeof Cage2DepthSegmentsMaterial\n >;\n }\n }\n}\n\nextend({ Cage2DepthSegmentsMaterial });\n","import {\n useGLTF,\n Html,\n /*, QuadraticBezierLine*/\n} from '@react-three/drei';\nimport { useLoader } from '@react-three/fiber';\nimport rgba from 'color-normalize';\nimport { useRef, useState, Fragment } from 'react';\nimport * as THREE from 'three';\nimport { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\n\nimport hexColors, { getColorForSeverity } from '../../../lib/colors';\nimport { CageContents, LICE_SKIRT, SensorLocationContents, SINKER_TUBE } from '../../../lib/types';\nimport '../Materials/Cage4DepthMaterial';\n\ninterface BottomRingProps {\n cagePosition: [number, number, number];\n color: [number, number, number];\n depth: number;\n}\n\ntype BottomRingGLTFResult = GLTF & {\n nodes: {\n Torus: THREE.Mesh;\n };\n materials: {};\n};\n\nconst BottomRingSetup = (props: BottomRingProps) => {\n const group = useRef();\n const { nodes } = useGLTF('Models/bunnring.glb') as BottomRingGLTFResult;\n const depthPos = props.depth * (-25.5 / 40);\n return (\n \n \n \n \n \n \n \n );\n};\n\ntype ShieldingSkirtGLTFResult = GLTF & {\n nodes: {\n Torus001: THREE.Mesh;\n };\n materials: {};\n};\n\ninterface ShieldingSkirtProps {\n cagePosition: [number, number, number];\n color: [number, number, number];\n}\n\nconst ShieldingSkirtSetup = (props: ShieldingSkirtProps) => {\n const group = useRef();\n const { nodes } = useGLTF('Models/ShieldingSkirt.glb') as ShieldingSkirtGLTFResult;\n\n return (\n \n \n \n \n \n \n \n );\n};\n\ninterface CageProps {\n cageData: CageContents;\n setHoveredCageKey: any;\n showColor?: boolean;\n}\n\ninterface SLGroup {\n sensorLocations: SensorLocationContents[];\n min_depth: number;\n max_depth: number;\n}\n\ntype GLTFResult = GLTF & {\n nodes: {\n Cage: THREE.Mesh;\n AnchorPointNE: THREE.Mesh;\n AnchorPointNW: THREE.Mesh;\n AnchorPointSE: THREE.Mesh;\n AnchorPointSW: THREE.Mesh;\n Nett: THREE.Mesh;\n Walkway: THREE.Mesh;\n };\n materials: {};\n};\nconst standardScale: number = 0.0148;\nconst standardSize: number = 160;\n// const highlightScaling: number = 0.016/0.0148;\nconst standardWalkwayColor = '#555555';\nconst highlightWalkwayColor = '#1D3556';\nconst yOffset: number = 1.1;\nconst waterSurfaceConst = -350;\nconst meterEquivalent = 1.5 / 40;\n\nconst findScaleFromCircumference = (circumference: number) => {\n return (circumference * standardScale) / standardSize;\n};\n\nconst Cage = ({ cageData, setHoveredCageKey, showColor }: CageProps) => {\n const scale = findScaleFromCircumference(cageData.meta.circumference);\n\n const [walkWayColor, setWalkwayColor] = useState(standardWalkwayColor);\n const group = useRef();\n const { nodes } = useGLTF('Models/Cage_Polarcirkel_withNett.glb') as GLTFResult;\n\n const netTexture = useLoader(THREE.TextureLoader, 'CageNet.png');\n netTexture.wrapS = netTexture.wrapT = THREE.RepeatWrapping;\n netTexture.repeat.set(10, 10);\n const newPosition: [number, number, number] = [\n cageData.position[0],\n cageData.position[1] + yOffset,\n cageData.position[2],\n ];\n\n const heightFromMaxMin = (max: number, min: number) => {\n return meterEquivalent * (max - min);\n };\n const addOrCreate = (sl: SensorLocationContents, slGroups: SLGroup[]) => {\n var added = false;\n for (var slGroup of slGroups) {\n if (slGroup.max_depth === sl.meta.max_depth && slGroup.min_depth === sl.meta.min_depth) {\n slGroup.sensorLocations.push(sl);\n added = true;\n }\n }\n if (!added) {\n slGroups.push({ sensorLocations: [sl], max_depth: sl.meta.max_depth, min_depth: sl.meta.min_depth });\n }\n return slGroups;\n };\n var slGroups: SLGroup[] = [];\n cageData &&\n cageData.sensor_locations\n .filter((sensorLoc: SensorLocationContents) => sensorLoc.meta?.type === 'depth')\n .forEach((sl: SensorLocationContents) => addOrCreate(sl, slGroups));\n // const randomStatus= (index:number)=>{\n // return index%3\n // }\n var maxDepth = slGroups\n .map((slGroup) => slGroup.max_depth)\n .reduce((prev, current) => (prev > current ? prev : current), 5);\n const cageScale = (maxDepth / 30) * 0.75;\n const shieldingSkirt = cageData.sensor_locations.find((slc) => {\n return slc.meta.type === LICE_SKIRT;\n });\n const sinkerTube = cageData.sensor_locations.find((slc) => {\n return slc.meta.type === SINKER_TUBE;\n });\n\n return (\n {\n e.stopPropagation();\n setWalkwayColor(highlightWalkwayColor);\n document.body.style.cursor = 'pointer';\n setHoveredCageKey(cageData.node_key);\n }}\n onPointerLeave={(e) => {\n setWalkwayColor(standardWalkwayColor);\n document.body.style.cursor = 'auto';\n }}\n >\n {slGroups &&\n slGroups.map((slGroup: SLGroup, index: number) => {\n const segments = slGroup.sensorLocations.map((sl: SensorLocationContents, index) => {\n return {\n level: sl.sensors.length > 0 || showColor ? sl.status.level : -1,\n left_border: (sl.meta.left_border * Math.PI) / 180.0,\n right_border: (sl.meta.right_border * Math.PI) / 180.0,\n };\n });\n //const segments = slGroup.sensorLocations.map((sl:SensorLocationContents,i)=>{return {level:randomStatus(i),left_border:(sl.meta.left_border*Math.PI/180.0),right_border:sl.meta.right_border*Math.PI/180.0}})\n\n return (\n \n \n \n \n );\n })}\n \n {}\n \n {/* */}\n \n \n \n \n \n \n\n \n
\n {cageData.name.length > 2 ? cageData.name : `${cageData.node_kind} ${cageData.name}`}\n
\n \n\n {sinkerTube && (\n 0 || showColor\n ? rgba(getColorForSeverity(sinkerTube.status.level))\n : rgba(hexColors.grey)\n }\n />\n )}\n {shieldingSkirt && (\n 0 || showColor\n ? rgba(getColorForSeverity(shieldingSkirt.status.level))\n : rgba(hexColors.grey)\n }\n />\n )}\n \n );\n};\n\nuseGLTF.preload('Models/Cage_Polarcirkel_withNett.glb');\nuseGLTF.preload('Models/bunnring.glb');\nuseGLTF.preload('Models/ShieldingSkirt.glb');\n\nexport default Cage;\n","import * as THREE from 'three';\nimport { useRef } from 'react';\nimport { useGLTF } from '@react-three/drei';\nimport { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\nimport { Feeding_Barge } from '../../../lib/types';\nimport { Vector3 } from 'three';\n\ntype GLTFResult = GLTF & {\n nodes: {\n Mesh: THREE.Mesh;\n Mesh_1: THREE.Mesh;\n Mesh_2: THREE.Mesh;\n Mesh_3: THREE.Mesh;\n Mesh_4: THREE.Mesh;\n Mesh_5: THREE.Mesh;\n Mesh_6: THREE.Mesh;\n Mesh_7: THREE.Mesh;\n Mesh_8: THREE.Mesh;\n Mesh_9: THREE.Mesh;\n Mesh_10: THREE.Mesh;\n Mesh002: THREE.Mesh;\n Mesh002_1: THREE.Mesh;\n };\n materials: {\n green6028: THREE.MeshStandardMaterial;\n ['Zimbabwe Black']: THREE.MeshStandardMaterial;\n paint_white: THREE.MeshStandardMaterial;\n Rubber: THREE.MeshStandardMaterial;\n BaseMtl: THREE.MeshStandardMaterial;\n shell: THREE.MeshStandardMaterial;\n ['Material #2100472524']: THREE.MeshStandardMaterial;\n ['Material #2100472571']: THREE.MeshStandardMaterial;\n ['Material #2100471636']: THREE.MeshStandardMaterial;\n paint_white2: THREE.MeshStandardMaterial;\n ['Material #выав4']: THREE.MeshStandardMaterial;\n ['BaseMtl.001']: THREE.MeshStandardMaterial;\n ['BaseMtl.002']: THREE.MeshStandardMaterial;\n };\n};\n\ninterface FeedBargeProps {\n fb: Feeding_Barge;\n}\nconst WATER_LEVEL_MODEL_ADJUSTMENT: number = 4;\nconst FeedBarge = ({ fb }: FeedBargeProps) => {\n const group = useRef();\n const { nodes, materials } = useGLTF('Models/forflaate.glb') as GLTFResult;\n return (\n \n {\n console.log(fb.node_key);\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n \n \n \n );\n};\n\nuseGLTF.preload('Models/forflaate.glb');\n\nexport default FeedBarge;\n","import { FC } from 'react';\nimport { MeshProps, useLoader } from '@react-three/fiber';\nimport * as THREE from 'three';\nimport { Plane } from '@react-three/drei';\n\nconst HeightPlane: FC = (props) => {\n const height = useLoader(THREE.TextureLoader, 'elevation.png');\n const normals = useLoader(THREE.TextureLoader, 'elevationNormals.png');\n\n return (\n \n \n \n );\n};\n\nexport default HeightPlane;\n","import { useState, useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { List, Button, Card, Transition } from 'semantic-ui-react';\n\nimport { getSensorSegment, getUnit } from '../../lib/format';\nimport { findMeasurementsForSensor } from '../../lib/functionality';\nimport { CageContents, MeasurementPair, SensorContents, SensorLocationContents } from '../../lib/types';\n\ninterface AlarmDisplayProps {\n cages: CageContents[];\n setMenuRightVisible: any;\n /*setCages: (cageContents: CageContents[]) => void;*/\n}\n\ninterface AlarmProps {\n cage: string;\n cageName: string;\n depth: number;\n segment: any;\n scenario_name: string;\n severity: number;\n status: string;\n description: string;\n num: number;\n time: Date;\n sensor_location: string;\n dismissed: boolean;\n measurement: MeasurementPair[];\n setDismissed: (cageId: string, sensorLocation: string, scenarioName: string) => void;\n setMenuRightVisible: any;\n history: any;\n sensor_keys: string[];\n}\n\nconst findSensorKeyFromAlarm = (sl: SensorLocationContents, measurementPairs: MeasurementPair[]) => {\n let measurements = measurementPairs.map((pair: MeasurementPair) => pair.type);\n return sl.sensors\n .filter((sensor: SensorContents) => {\n let sensorMeasurements = findMeasurementsForSensor(sensor);\n let unionList: string[] = measurements.filter((m) => !sensorMeasurements.includes(m));\n return unionList.length === 0;\n })\n .map((sensor: SensorContents) => sensor.node_key);\n};\n\nconst AlarmDisplay = ({ cages, setMenuRightVisible }: AlarmDisplayProps) => {\n const history = useHistory();\n const [alarmStack, setAlarmStack] = useState([]);\n const [dismissAllButton, setDismissAllButton] = useState(false);\n\n useEffect(() => {\n const setDismissed = (cageId: string, sensorLocation: string, scenarioName: string) => {\n const newCages = [...cages];\n const cage = newCages.find((cage) => cage.node_key === cageId)!;\n const sensor_location = cage.sensor_locations.find(\n (sensor_location) => sensor_location.node_key === sensorLocation\n )!;\n const scenario = sensor_location.scenario_status.find(\n (scenario_status) => scenario_status.name === scenarioName\n )!;\n\n scenario.dismissed = true;\n };\n\n let tempalarmStack: AlarmProps[] = [];\n\n cages &&\n cages.forEach((cage) => {\n cage.sensor_locations.forEach((sLoc) => {\n sLoc.scenario_status.forEach((status) => {\n if (status.severity.level > 0) {\n const depth = sLoc.meta.max_depth - (sLoc.meta.max_depth - sLoc.meta.min_depth) / 2;\n const newAlarm: AlarmProps = {\n cage: cage.node_key,\n cageName: cage.name,\n depth: depth,\n segment: getSensorSegment(sLoc.meta),\n sensor_location: sLoc.node_key,\n scenario_name: status.name,\n status: status.severity.description,\n description: status.description,\n severity: status.severity.level,\n time: status.date ? status.date : new Date(),\n dismissed: status.dismissed,\n num: 1,\n measurement: status.measurements ? status.measurements : [],\n setDismissed: setDismissed,\n setMenuRightVisible: setMenuRightVisible,\n history: history,\n sensor_keys: findSensorKeyFromAlarm(sLoc, status.measurements),\n };\n tempalarmStack.push(newAlarm);\n }\n });\n });\n });\n\n setAlarmStack(tempalarmStack);\n }, [cages, setMenuRightVisible, history]);\n\n const showDismissAll = (show: any) => {\n if (show && alarmStack.filter((alarm) => !alarm.dismissed).length > 1) {\n setDismissAllButton(true);\n } else setDismissAllButton(false);\n };\n\n return (\n {\n showDismissAll(true);\n }}\n onMouseLeave={() => {\n showDismissAll(false);\n }}\n >\n {dismissAllButton && (\n {\n alarmStack.forEach((alarm) => {\n alarm.setDismissed(alarm.cage, alarm.sensor_location, alarm.scenario_name);\n });\n }}\n >\n Dismiss All\n \n )}\n {alarmStack\n .sort((a, b) => {\n if (a.severity === b.severity) {\n if (a.time.getTime() === b.time.getTime()) {\n if (a.description === b.description) return a.segment?.segmentNr > b.segment?.segmentNr ? 1 : -1;\n return a.description > b.description ? 1 : -1;\n }\n return a.time > b.time ? -1 : 1;\n }\n return a.severity > b.severity ? -1 : 1;\n })\n .map((alarm, index) => (\n \n ))}\n
\n );\n};\n\nconst AlarmDisplayElement = (alarm: AlarmProps) => {\n const classNames = ['alarm'];\n const [visible, setVisible] = useState(!alarm.dismissed);\n\n classNames.push('severity' + (alarm.severity < 0 ? 0 : alarm.severity));\n\n if (alarm.num > 1) {\n classNames.push('stacked');\n classNames.push(alarm.num === 2 ? 'two' : 'three');\n }\n const dismiss = () => {\n setVisible(false);\n alarm.setDismissed(alarm.cage, alarm.sensor_location, alarm.scenario_name);\n };\n let measurements: string = alarm.measurement\n .map((m) => {\n return m.type.slice(0, 1).toUpperCase() + m.type.slice(1) + ':' + m.measurement.toFixed(1) + getUnit(m.type);\n })\n .join(', ');\n\n return (\n \n \n \n {alarm.scenario_name.toUpperCase()}\n {measurements}\n \n Cage {alarm.cageName} | {alarm.depth}m {alarm.segment.label} |{' '}\n {alarm.time.toLocaleTimeString('nb-NO', { hour: '2-digit', minute: '2-digit' })}\n \n \n \n {\n if (alarm) {\n alarm.history.push('/analytics/' + alarm.sensor_keys[0]);\n }\n }}\n >\n Analytics\n \n \n \n \n \n );\n};\n\nexport default AlarmDisplay;\n","interface CompassProps {\n rotation: number;\n}\n\nconst CompassRose = ({ rotation }: CompassProps) => {\n return (\n
\n \n \n \n \n N\n \n \n \n
\n );\n};\n\nexport default CompassRose;\n","import { ResizeObserver } from '@juggle/resize-observer';\nimport { OrbitControls, Sky } from '@react-three/drei';\nimport { Canvas, ThreeEvent, useFrame } from '@react-three/fiber';\nimport { observer } from 'mobx-react';\n\nimport { Fragment, Suspense, useRef, useState } from 'react';\nimport THREE, { MathUtils, Spherical, Vector3 } from 'three';\nimport Cage from '../Components/3D/Objects/Cage';\nimport FeedBarge from '../Components/3D/Objects/FeedBarge';\nimport HeightPlane from '../Components/3D/Objects/HeightPlane';\nimport OceanPlane from '../Components/3D/Objects/OceanPlane';\nimport AlarmDisplay from '../Components/UIElements/AlarmDisplay';\nimport CompassRose from '../Components/UIElements/CompassRose';\nimport { AuthFetcher } from '../lib/fetch';\nimport { CageContents, SiteContents } from '../lib/types';\nimport useStore from '../Store/Store';\n\ninterface SiteViewProps {\n site: SiteContents | undefined;\n setMenuRightVisible: (r: boolean) => void;\n setPicked: (a: any) => void;\n nodeClicked: (a: string) => void;\n showAlarms: boolean;\n showColors?: boolean;\n}\n\nconst SiteView = observer(\n ({ site, setPicked, nodeClicked, setMenuRightVisible, showAlarms, showColors }: SiteViewProps) => {\n const { authStore } = useStore();\n const virtualCamera = useRef();\n const [cameraPosition] = useState(new Vector3(10, 150, 200));\n\n const [rotation, setRotation] = useState(0);\n\n var dir = new Vector3();\n var sph = new Spherical();\n const Rotation = () => {\n useFrame((state) => {\n state.camera.getWorldDirection(dir);\n sph.setFromVector3(dir);\n\n const rotate = MathUtils.radToDeg(sph.theta) - 180;\n\n setRotation(rotate);\n });\n return null;\n };\n return (\n \n \n {/* Scene setup */}\n\n \n \n\n \n \n \n \n\n {/* World objects */}\n {site && site.cages && (\n \n {}}\n setMenuRightVisible={setMenuRightVisible}\n showColor={showColors}\n />\n \n )}\n\n {site && site.feeding_barge && (\n \n ) => {\n if (e.altKey) {\n e.stopPropagation();\n AuthFetcher('/api/v1/demo/trigger/cycle/oxygen', authStore.getTokenFunction(), {\n method: 'PUT',\n });\n }\n }}\n >\n \n \n \n )}\n\n \n \n \n \n \n \n\n {/* \n \n */}\n \n\n {/* */}\n {showAlarms && site && }\n {/* \n

Anlegg: {SiteName}

\n
*/}\n\n \n
\n );\n }\n);\n\ninterface CageSetupProps {\n cages: CageContents[];\n cageClicked: any;\n cageHover: any;\n setMenuRightVisible: any;\n setCage: any;\n showColor?: boolean;\n}\n\nconst CageSetup = ({ cages, cageClicked, setMenuRightVisible, setCage, showColor }: CageSetupProps) => {\n const group = useRef();\n\n const [hoveredCageKey, setHoveredCageKey] = useState(null);\n return (\n {\n if (e.type === 'click') {\n setCage(undefined);\n setMenuRightVisible(false);\n }\n }}\n onClick={(e) => {\n e.stopPropagation();\n cageClicked(hoveredCageKey);\n }}\n >\n {cages.map((data, index) => (\n \n ))}\n \n );\n};\n\nexport default SiteView;\n","import { Sidebar } from 'semantic-ui-react';\n\ninterface RightMenuProps {\n visible: boolean;\n content: any;\n}\n\nconst RightMenu = ({ visible, content }: RightMenuProps) => {\n return (\n \n );\n};\n\nexport default RightMenu;\n","import { LocationOption } from '../../lib/types';\n\ninterface SegmentPickerProps {\n segments: LocationOption[];\n activeSegment: string | undefined;\n setActiveSegment: (s: string) => void;\n}\n\nconst SegmentPicker = ({ segments, activeSegment, setActiveSegment }: SegmentPickerProps) => {\n if (segments.length <= 1) {\n return <>;\n }\n return (\n <>\n
\n\n {segments.map((segment: LocationOption, index: number) => {\n const rotation = segment.meta?.left_border + 45;\n if (segment && !activeSegment && segment.meta?.left_border === 0) {\n setActiveSegment(segment.key);\n }\n const active = activeSegment ? (activeSegment === segment.key ? true : false) : index === 0 ? true : false;\n return (\n
\n {\n setActiveSegment(segment.key);\n }}\n className={'circle_segment ' + (active ? 'active' : '')}\n >
\n \n );\n })}\n\n \n N\n \n \n E\n \n \n S\n \n \n W\n \n \n );\n};\nexport default SegmentPicker;\n","import { makeAutoObservable } from 'mobx';\nimport { createContext, useContext } from 'react';\nimport { SiteContents } from '../../lib/types';\n\nexport class AlarmListStore {\n createAlarm: boolean = false;\n editAlarm: boolean = false;\n connectAlarm: boolean = false;\n disconnectAlarm: boolean = false;\n site: SiteContents | undefined = undefined;\n constructor() {\n makeAutoObservable(this);\n }\n\n showCreateAlarm(b: boolean) {\n console.log('this happens');\n this.createAlarm = b;\n }\n\n showEditAlarm(b: boolean) {\n this.editAlarm = b;\n }\n\n showConnectAlarm(b: boolean) {\n this.connectAlarm = b;\n }\n\n showDisconnectAlarm(b: boolean) {\n this.disconnectAlarm = b;\n }\n\n setSite(site: SiteContents | undefined) {\n this.site = site;\n }\n}\n\nconst alarmListContext = createContext({ alarmListStore: new AlarmListStore() });\n\nconst useAlarmListStore = () => useContext(alarmListContext);\nexport default useAlarmListStore;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { useContext, useState } from 'react';\nimport { Modal, Grid, Select, Button } from 'semantic-ui-react';\nimport { mutate } from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { AlarmContents, CageContents, LocationOption, SensorLocationContents } from '../../lib/types';\nimport useStore from '../../Store/Store';\nimport NotyfContext from '../NotyfContext';\nimport SegmentPicker from '../UIElements/SegmentPicker';\nimport useAlarmListStore from './AlarmListStore';\n\nconst makeTitleForConnectingSensor = (cageName: string, alarm: AlarmContents | undefined) => {\n if (!cageName || !alarm) {\n return '';\n }\n\n return 'Connect ' + _.capitalize(alarm.name) + ' Alarm to Cage ' + cageName;\n};\n\ninterface ConnectAlarmDialogueProps {\n siteKey: string | undefined;\n cageName: string;\n alarm: AlarmContents | undefined;\n cage: CageContents | undefined;\n}\n\nconst ConnectAlarmDialogue = observer(({ siteKey, cageName, alarm, cage }: ConnectAlarmDialogueProps) => {\n const notyf = useContext(NotyfContext);\n const { authStore } = useStore();\n const { alarmListStore } = useAlarmListStore();\n const [activeSegment, setActiveSegment] = useState();\n const [selectedLocation, setSelectedLocation] = useState();\n\n var locationOptions: LocationOption[] = [];\n if (cage) {\n cage.sensor_locations?.sort((a: SensorLocationContents, b: SensorLocationContents) =>\n a.meta.min_depth > b.meta.min_depth ? 1 : -1\n );\n locationOptions = cage.sensor_locations.map((location: SensorLocationContents) => {\n const depth = location?.meta?.max_depth\n ? location.meta.type === 'depth'\n ? location.meta.min_depth + ' - ' + location.meta.max_depth\n : location.meta.max_depth - (location.meta.max_depth - location.meta.min_depth) / 2\n : 0;\n const description = location.meta?.type\n ? location.meta.type === 'depth'\n ? depth + ' meters, Cage '\n : depth + ' meters, ' + _.upperFirst(location.meta.type).replace('_', ' ')\n : 'Unknown';\n return {\n key: location.node_key,\n value: location.node_key,\n text: description,\n // type: location.meta.type,\n meta: location.meta,\n };\n });\n }\n var segments: LocationOption[] = [];\n if (locationOptions.length > 0) {\n const location = locationOptions.find((option: LocationOption) => option.key === selectedLocation);\n segments = locationOptions.filter(\n (o: LocationOption) =>\n o.meta?.min_depth === location?.meta?.min_depth &&\n o.meta.type === location.meta.type &&\n o.meta.max_depth === location.meta.max_depth\n );\n }\n\n const assign = async () => {\n if (!alarm || !cage) {\n console.log('no alarm');\n return;\n }\n\n let alarmKey = alarm.node_key;\n const locationKey = activeSegment ? activeSegment : selectedLocation;\n\n const sl = cage.sensor_locations.find((sl: SensorLocationContents) => sl.node_key === locationKey);\n\n if (!sl) {\n notyf.error('unknown location');\n return;\n }\n\n if (sl?.scenarios.findIndex((a: AlarmContents) => a.node_key === alarm.node_key) > -1) {\n notyf.error('This alarm is already assinged to this location');\n return;\n }\n\n AuthFetcher(\n '/api/v1/add/connection/' + locationKey + '/SensorLocation/' + alarmKey + '/Alarm',\n authStore.getTokenFunction(),\n {\n method: 'PUT',\n }\n )\n ?.then((res) => {\n res.error\n ? notyf.error('Could not pair alarm. Error code: ' + res.status + ' ' + res.statusText)\n : notyf.success('Successfully connected alarm');\n setSelectedLocation(undefined);\n alarmListStore.showConnectAlarm(false);\n mutate(`/api/v1/site/${siteKey}`);\n mutate(`/api/v1/sensor/site/${siteKey}`);\n })\n .catch((err) => {\n notyf.error('Could not pair alarm.');\n });\n };\n\n return (\n \n {makeTitleForConnectingSensor(cageName, alarm)}\n \n \n \n location.meta?.left_border === 0)}\n onChange={(e, { value }) => {\n setActiveSegment(undefined);\n setSelectedLocation(value);\n }}\n value={selectedLocation}\n />\n \n \n \n \n \n \n \n {\n setActiveSegment(undefined);\n alarmListStore.showConnectAlarm(false);\n }}\n negative\n >\n Cancel\n \n {\n if (selectedLocation) assign();\n else notyf.error('No placement selected.');\n }}\n positive\n >\n Connect\n \n \n \n );\n});\n\nexport default ConnectAlarmDialogue;\n","import { useEffect, useState } from 'react';\nimport { Grid, Label, Input, Radio, Dropdown, Icon } from 'semantic-ui-react';\nimport { AlarmContents, ALARM_NODE_TYPE, TriggerContents } from '../../lib/types';\n\nconst triggerTypeOpts = [\n { key: 'less_than', text: 'less than', value: 'less_than' },\n { key: 'more_than', text: 'more than', value: 'more_than' },\n];\nconst measurementsOpts = [\n { key: 'oxygen', text: 'Oxygen', value: 'oxygen' },\n { key: 'pitch', text: 'Tilt', value: 'pitch' },\n { key: 'salinity', text: 'Salinity', value: 'salinity' },\n { key: 'depth', text: 'Depth', value: 'depth' },\n { key: 'temperature', text: 'Temperature', value: 'temperature' },\n { key: 'turbidity', text: 'Turbidity', value: 'turbidity' },\n];\n\nconst invalidLimits = (mType: string, tType: string, warn: number, crit: number) => {\n switch (tType) {\n default:\n return true;\n case 'less_than':\n return warn <= crit;\n case 'more_than':\n return warn >= crit;\n }\n};\n\nconst invalidDevianceLimits = (baseline: number, warn: number, crit: number) => {\n return baseline - warn <= baseline - crit || baseline + warn >= baseline + crit;\n};\n\ninterface OnePointDevianceAlarmProps {\n setTrigger: (a: TriggerContents) => void;\n defaultTrigger?: TriggerContents;\n}\n\nconst OnePointDevianceAlarm = ({ setTrigger, defaultTrigger }: OnePointDevianceAlarmProps) => {\n const [mType, setMType] = useState('');\n const [baseline, setBaseline] = useState(0);\n const [crit, setCrit] = useState(0);\n const [warn, setWarn] = useState(0);\n\n useEffect(() => {\n if (mType !== '' && baseline !== 0 && crit !== 0 && warn !== 0) {\n let newTrigger: TriggerContents = {\n trigger_type: 'one_dimension_point',\n trigger_action: '',\n measurements: mType,\n warning_trigger_distance: 0,\n warning_point: warn,\n critical_point: crit,\n baseline_point: baseline,\n };\n setTrigger(newTrigger);\n } else if (defaultTrigger) {\n setMType(defaultTrigger.measurements);\n setBaseline(defaultTrigger.baseline_point);\n setCrit(defaultTrigger.critical_point);\n setWarn(defaultTrigger.warning_point);\n }\n }, [mType, baseline, crit, warn, setTrigger, defaultTrigger]);\n return (\n \n \n \n \n \n \n \n {\n if (d.value) {\n setMType(d.value.toString());\n }\n }}\n >\n \n\n \n {\n if (+d.value > 0) {\n setWarn(+d.value);\n }\n }}\n >\n \n \n \n \n \n \n \n \n {\n if (d.value) {\n setMType(d.value.toString());\n }\n }}\n />\n \n \n {\n if (+d.value > 0) {\n setCrit(+d.value);\n }\n }}\n >\n \n \n \n \n \n \n \n {\n if (d.value) {\n setMType(d.value.toString());\n }\n }}\n >\n \n \n {\n setBaseline(+d.value);\n }}\n >\n \n \n \n );\n};\n\ninterface OneDimensionAlarmProps {\n setTrigger: (a: TriggerContents) => void;\n defaultTrigger?: TriggerContents;\n}\n\nconst OneDimensionAlarm = ({ setTrigger, defaultTrigger }: OneDimensionAlarmProps) => {\n const [mType, setMType] = useState('');\n const [aType, setAType] = useState('');\n const [crit, setCrit] = useState(0);\n\n const [warn, setWarn] = useState(0);\n\n useEffect(() => {\n if (mType !== '' && aType !== '' && crit !== 0 && warn !== 0) {\n let newTrigger: TriggerContents = {\n trigger_type: 'one_dimension_point',\n trigger_action: aType,\n measurements: mType,\n warning_trigger_distance: 0,\n warning_point: warn,\n critical_point: crit,\n baseline_point: -1,\n };\n setTrigger(newTrigger);\n } else if (defaultTrigger) {\n setMType(defaultTrigger.measurements);\n setAType(defaultTrigger.trigger_action);\n setCrit(defaultTrigger.critical_point);\n setWarn(defaultTrigger.warning_point);\n }\n }, [mType, aType, crit, warn, setTrigger, defaultTrigger]);\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n if (d.value) {\n setMType(d.value.toString());\n }\n }}\n >\n \n \n {\n if (d.value) {\n setAType(d.value.toString());\n }\n }}\n >\n \n \n {\n setWarn(+d.value);\n }}\n fluid\n >\n \n \n \n \n \n \n \n {\n if (d.value) {\n setMType(d.value.toString());\n }\n }}\n />\n \n \n {\n if (d.value) {\n setAType(d.value.toString());\n }\n }}\n />\n \n \n {\n setCrit(+d.value);\n }}\n fluid\n >\n \n \n \n );\n};\n\ninterface AlarmFormProps {\n setAlarm: (a: AlarmContents | undefined) => void;\n defaultAlarm?: AlarmContents;\n}\n\nconst AlarmForm = ({ setAlarm, defaultAlarm }: AlarmFormProps) => {\n const [name, setName] = useState('');\n const [type, setType] = useState();\n const [trigger, setTrigger] = useState();\n useEffect(() => {\n if (trigger && type !== '' && name !== '') {\n let newAlarm: AlarmContents = {\n node_key: defaultAlarm ? defaultAlarm.node_key : '',\n node_kind: ALARM_NODE_TYPE,\n name: name,\n description: '',\n trigger: trigger,\n };\n setAlarm(newAlarm);\n } else if (defaultAlarm) {\n setName(defaultAlarm.name);\n setType(defaultAlarm.trigger.trigger_type);\n setTrigger(defaultAlarm.trigger);\n }\n }, [name, type, trigger, setAlarm, defaultAlarm]);\n return (\n \n \n \n \n \n \n setName(d.value)} value={name} type=\"text\">\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n if (d.checked) {\n setType('one_dimension_point');\n }\n }}\n >\n \n \n {\n if (d.checked) {\n setType('one_dimension_deviance');\n }\n }}\n >\n \n \n \n {type === 'one_dimension_point' && (\n \n )}\n {type === 'one_dimension_deviance' && (\n \n )}\n \n \n );\n};\n\nexport default AlarmForm;\n","import { observer } from 'mobx-react';\nimport { useContext, useState } from 'react';\nimport { Modal, Button } from 'semantic-ui-react';\nimport { mutate } from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { AlarmContents, TriggerContents } from '../../lib/types';\nimport useStore from '../../Store/Store';\nimport NotyfContext from '../NotyfContext';\nimport AlarmForm from './AlarmForm';\nimport useAlarmListStore from './AlarmListStore';\n\nconst invalidLimits = (mType: string, tType: string, warn: number, crit: number) => {\n switch (tType) {\n default:\n return true;\n case 'less_than':\n return warn <= crit;\n case 'more_than':\n return warn >= crit;\n }\n};\n\nconst invalidDevianceLimits = (baseline: number, warn: number, crit: number) => {\n return baseline - warn <= baseline - crit || baseline + warn >= baseline + crit;\n};\n\nconst validAlarm = (alarm: AlarmContents) => {\n if (alarm.name === '') {\n return false;\n }\n return alarm.trigger && validTrigger(alarm.trigger);\n};\n\nconst validTrigger = (trigger: TriggerContents) => {\n if (!trigger) {\n return false;\n }\n if (trigger.trigger_type === 'one_dimension_deviance') {\n return !invalidDevianceLimits(trigger.baseline_point, trigger.warning_point, trigger.critical_point);\n } else if (trigger.trigger_type === 'one_dimension_point') {\n return !invalidLimits(trigger.measurements, trigger.trigger_action, trigger.warning_point, trigger.critical_point);\n } else {\n return false;\n }\n};\n\nconst CreateAlarmDialogue = observer(() => {\n const { authStore } = useStore();\n const { alarmListStore } = useAlarmListStore();\n const notyf = useContext(NotyfContext);\n const [alarm, setAlarm] = useState();\n const addAlarm = async () => {\n if (alarm && validAlarm(alarm)) {\n let response = await AuthFetcher('/api/v1/alarm/add', authStore.getTokenFunction(), {\n body: alarm,\n method: 'POST',\n raw: true,\n });\n\n if (response.ok) {\n notyf.success('Added new alarm');\n alarmListStore.showConnectAlarm(false);\n mutate('/api/v1/alarm');\n } else {\n notyf.error('Failed adding new alarm ');\n }\n }\n };\n\n return (\n \n Create Alarm\n \n \n \n \n \n \n \n \n );\n});\n\nexport default CreateAlarmDialogue;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { useContext } from 'react';\nimport { Modal, Button } from 'semantic-ui-react';\nimport { mutate } from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { getSensorDepth, getSensorSegment } from '../../lib/format';\nimport { AlarmContents, CageContents, SensorLocationContents } from '../../lib/types';\nimport useStore from '../../Store/Store';\nimport NotyfContext from '../NotyfContext';\nimport useAlarmListStore from './AlarmListStore';\n\ninterface DisconnectAlarmDialogueProps {\n siteKey: string | undefined;\n cage: CageContents;\n alarm: AlarmContents | undefined;\n}\nconst makeContentForDisconnectingSensor = (\n alarm: AlarmContents | undefined,\n sl: SensorLocationContents | undefined\n) => {\n if (!sl) {\n return '';\n }\n\n let placement: string = sl ? getSensorDepth(sl.meta) + ' ' + getSensorSegment(sl.meta)?.label : '';\n return 'Are you sure you want to disconnect Alarm ' + _.capitalize(alarm?.name) + ' from ' + placement;\n};\n\nconst DisconnectAlarmDialogue = observer(({ siteKey, alarm, cage }: DisconnectAlarmDialogueProps) => {\n const notyf = useContext(NotyfContext);\n const { alarmListStore } = useAlarmListStore();\n const { authStore } = useStore();\n let sl: SensorLocationContents | undefined = cage.sensor_locations.find((sl: SensorLocationContents) => {\n return sl.scenarios.find((a: AlarmContents) => a.node_key === alarm?.node_key) !== undefined;\n });\n const unassign = () => {\n AuthFetcher(\n '/api/v1/delete/connection/' + sl?.node_key + '/SensorLocation/' + alarm?.node_key + '/Alarm',\n authStore.getTokenFunction(),\n\n { method: 'DELETE' }\n )\n ?.then((res) => {\n console.log(siteKey);\n mutate(`/api/v1/site/${siteKey}`);\n mutate(`/api/v1/alarm`);\n res.error ? notyf.error('Could not disconnect alarm') : notyf.success('Successfully disconnected alarm');\n alarmListStore.showDisconnectAlarm(false);\n })\n .catch((err) => {\n notyf.error('Could not disconnect alarm.');\n alarmListStore.showDisconnectAlarm(false);\n });\n };\n\n return (\n \n Are you sure?\n {makeContentForDisconnectingSensor(alarm, sl)}\n \n \n \n \n \n );\n});\n\nexport default DisconnectAlarmDialogue;\n","import { observer } from 'mobx-react';\nimport { useContext, useEffect, useState } from 'react';\nimport { Button, Grid, Modal } from 'semantic-ui-react';\nimport { mutate } from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { AlarmContents } from '../../lib/types';\nimport useStore from '../../Store/Store';\nimport NotyfContext from '../NotyfContext';\nimport AlarmForm from './AlarmForm';\nimport useAlarmListStore from './AlarmListStore';\n\ninterface EditAlarmDialogueProps {\n siteKey: string | undefined;\n alarm: AlarmContents | undefined;\n}\n\nconst EditAlarmDialogue = observer(({ siteKey, alarm }: EditAlarmDialogueProps) => {\n const notyf = useContext(NotyfContext);\n const { authStore } = useStore();\n const { alarmListStore } = useAlarmListStore();\n const [newAlarm, setNewAlarm] = useState();\n useEffect(() => {\n if (alarm && !newAlarm) {\n setNewAlarm(JSON.parse(JSON.stringify(alarm)));\n }\n }, [alarm, newAlarm]);\n if (!alarm) {\n return <>;\n }\n\n const save = async () => {\n console.log('new ALarm->', newAlarm);\n if (newAlarm) {\n let response = await AuthFetcher('/api/v1/alarm/edit', authStore.getTokenFunction(), {\n body: newAlarm,\n method: 'PUT',\n raw: true,\n });\n\n if (response.ok) {\n notyf.success('Alarm is changed');\n alarmListStore.showEditAlarm(false);\n setNewAlarm(undefined);\n mutate('/api/v1/alarm');\n mutate('/api/v1/site/' + siteKey);\n } else {\n notyf.error('Failed changing the alarm ');\n }\n }\n };\n return (\n \n Edit alarm\n \n \n \n \n \n \n \n \n \n \n \n {\n alarmListStore.showEditAlarm(false);\n setNewAlarm(undefined);\n }}\n >\n Cancel\n \n \n \n );\n});\n\nexport default EditAlarmDialogue;\n","import { useState } from 'react';\nimport { Dropdown, Icon, Loader, Message, Popup, Segment, Table } from 'semantic-ui-react';\nimport useSWR from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { getSensorDepth, getSensorName, getSensorSegment } from '../../lib/format';\nimport { findSensorTypesFromMeasurements } from '../../lib/functionality';\nimport {\n AlarmContents,\n CageContents,\n MeasurementPair,\n ScenarioStatus,\n SensorContents,\n SensorLocationContents,\n TriggerContents,\n} from '../../lib/types';\nimport ConnectAlarmDialogue from './ConnectAlarmDialogue';\nimport CreateAlarmDialogue from './CreateAlarmDialogue';\nimport SensorIcon from '../UIElements/SensorIcon';\nimport _ from 'lodash';\nimport DisconnectAlarmDialogue from './DisconnectAlarmDialogue';\nimport EditAlarmDialogue from './EditAlarmDialogue';\n\nimport { observer } from 'mobx-react-lite';\nimport useAlarmListStore from './AlarmListStore';\nimport useStore from '../../Store/Store';\n\ninterface AlarmListProps {\n cage: CageContents | undefined;\n}\n\ninterface AlarmProps {\n alarm: AlarmContents;\n status?: ScenarioStatus;\n sl?: SensorLocationContents;\n setPickedAlarm: (a: AlarmContents) => void;\n}\n\n// const getColorFromLevel= (level:number)=>{\n// switch(level){\n// default:\n// return \"grey\"\n// case 0:\n// return \"green\"\n// case 1:\n// return \"yellow\"\n// case 2:\n// return \"red\"\n\n// }\n// }\n\ninterface SensorProps {\n sensor: SensorContents;\n}\n\nconst Sensor = ({ sensor }: SensorProps) => {\n let sensorName = getSensorName(sensor.sensor_type, sensor.sensor_id, sensor.name);\n return (\n \n \n \n }\n >\n {sensorName}\n \n );\n};\n\ninterface TriggerDisplayProps {\n trigger: TriggerContents;\n}\n\nconst TriggerDisplay = ({ trigger }: TriggerDisplayProps) => {\n if (trigger.trigger_type === 'one_dimension_point') {\n let action =\n trigger.trigger_action === 'less_than'\n ? ' < '\n : trigger.trigger_action === 'more_than'\n ? ' > '\n : trigger.trigger_action;\n\n return (\n \n \n \n {_.capitalize(trigger.measurements) + action + trigger.warning_point}\n \n \n \n {_.capitalize(trigger.measurements) + action + trigger.critical_point}\n \n \n );\n } else if (trigger.trigger_type === 'one_dimension_deviance') {\n return (\n \n \n \n \n {_.capitalize(trigger.measurements) + ' ' + trigger.baseline_point} ± {trigger.warning_point}\n \n \n \n \n \n {_.capitalize(trigger.measurements) + ' ' + trigger.baseline_point} ± {trigger.critical_point}\n \n \n \n );\n }\n\n return ;\n};\n\nconst Alarm = ({ alarm, status, sl, setPickedAlarm }: AlarmProps) => {\n // let level = status ? status.severity.level : -1\n const { alarmListStore } = useAlarmListStore();\n let depth = sl ? getSensorDepth(sl.meta) : '';\n let segment = sl ? getSensorSegment(sl.meta) : { segmentNr: -1, label: '' };\n let measurements = findSensorTypesFromMeasurements(\n status\n ? status.measurements.map((mPair: MeasurementPair) => {\n return mPair.type;\n })\n : []\n );\n let sensors: SensorContents[] = [];\n if (sl) {\n measurements\n .map((type: string) => {\n return sl.sensors.find((sensor: SensorContents) => sensor.sensor_type === type);\n })\n .forEach((sensor: SensorContents | undefined) => {\n if (sensor) {\n sensors.push(sensor);\n }\n });\n }\n return (\n \n \n \n {alarm.name}\n \n \n \n \n \n \n {depth + ' ' + segment.label}\n \n \n \n {sensors.map((sensor: SensorContents, index: number) => (\n \n \n \n ))}\n \n \n \n \n \n {\n setPickedAlarm(alarm);\n if (sl) {\n console.log('disconnecting alarm');\n alarmListStore.showDisconnectAlarm(true);\n } else {\n alarmListStore.showConnectAlarm(true);\n }\n }}\n >\n \n {sl ? 'Disconnect' : 'Connect placement'}\n \n {\n setPickedAlarm(alarm);\n alarmListStore.showEditAlarm(true);\n }}\n >\n \n Edit alarm\n \n \n \n \n \n );\n};\n\ninterface AlarmSlItem {\n cage: CageContents;\n sl: SensorLocationContents;\n alarm: AlarmContents;\n}\n\nconst AlarmList = observer(({ cage }: AlarmListProps) => {\n const { siteStore, authStore } = useStore();\n const { alarmListStore } = useAlarmListStore();\n const [pickedAlarm, setPickedAlarm] = useState();\n const { data: alarms, error } = useSWR('/api/v1/alarm', (url) => AuthFetcher(url, authStore.getTokenFunction()));\n const siteKey = siteStore.getSiteKey();\n console.log(error);\n if (!cage) {\n return ;\n }\n\n console.log('Alarms', alarms);\n const assingedAlarms: AlarmSlItem[] = [];\n cage.sensor_locations.forEach((sl: SensorLocationContents) =>\n assingedAlarms.push(\n ...sl.scenarios.map((a: AlarmContents) => {\n return { cage: cage, sl: sl, alarm: a };\n })\n )\n );\n assingedAlarms.sort((a: AlarmSlItem, b: AlarmSlItem) => {\n if (a.sl.node_key === b.sl.node_key) {\n return a.alarm.node_key > b.alarm.node_key ? 1 : -1;\n }\n return a.sl.node_key > b.sl.node_key ? 1 : -1;\n });\n if (error) {\n return Unable to load alarms;\n }\n if (!alarms) {\n return ;\n }\n console.log(alarms);\n console.log(assingedAlarms);\n\n cage.sensor_locations.sort((a: SensorLocationContents, b: SensorLocationContents) => {\n let segmentA = getSensorSegment(a.meta);\n let segmentB = getSensorSegment(b.meta);\n if (a.meta.max_depth === b.meta.max_depth) {\n return segmentA.segmentNr > segmentB.segmentNr ? 1 : -1;\n } else {\n return a.meta.max_depth > b.meta.max_depth ? 1 : -1;\n }\n });\n return (\n <>\n {/* */}\n \n \n \n Alarm\n Trigger points\n Placement\n Related Sensors\n \n \n \n \n \n Assigned alarms\n \n \n \n {assingedAlarms.map((sla: AlarmSlItem) => {\n let status: ScenarioStatus | undefined = sla.sl.scenario_status.find(\n (s: ScenarioStatus) => s.node_key === sla.alarm.node_key\n );\n return ;\n })}\n \n \n \n All alarms\n \n \n \n {alarms && alarms.map((alarm: AlarmContents) => )}\n \n \n \n {\n alarmListStore.showCreateAlarm(true);\n }}\n >\n \n Create Alarm\n \n \n \n
\n \n \n \n \n \n );\n});\n\nexport default AlarmList;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { useContext, useState } from 'react';\nimport { Modal, Grid, Select, Button } from 'semantic-ui-react';\nimport { mutate } from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { CageContents, LocationOption, SensorListItem, SensorLocationContents } from '../../lib/types';\nimport useStore from '../../Store/Store';\nimport NotyfContext from '../NotyfContext';\nimport SegmentPicker from '../UIElements/SegmentPicker';\n\nconst makeTitleForConnectingSensor = (cageName: string, sli: SensorListItem | undefined) => {\n if (!cageName || !sli) {\n return '';\n }\n\n let sensorName = sli.sensor ? sli.sensor.name : '' + String(sli.sensor_id).padStart(3, '0');\n return (\n 'Connect ' +\n _.capitalize(sli.sensor ? sli.sensor.sensor_type : sli.last_message ? sli.last_message.sensor_type : '') +\n ' Sensor (' +\n sensorName +\n ') to Cage ' +\n cageName\n );\n};\n\ninterface ConnectSensorDialogueProps {\n siteKey: string | undefined;\n cageName: string;\n display: boolean;\n setDisplay: (b: boolean) => void;\n sli: SensorListItem | undefined;\n cage: CageContents | undefined;\n}\n\nconst ConnectSensorDialogue = observer(\n ({ siteKey, cageName, display, sli, cage, setDisplay }: ConnectSensorDialogueProps) => {\n const notyf = useContext(NotyfContext);\n const { authStore } = useStore();\n const [activeSegment, setActiveSegment] = useState();\n const [selectedLocation, setSelectedLocation] = useState();\n\n var locationOptions: LocationOption[] = [];\n if (cage) {\n cage.sensor_locations?.sort((a: SensorLocationContents, b: SensorLocationContents) =>\n a.meta.min_depth > b.meta.min_depth ? 1 : -1\n );\n locationOptions = cage.sensor_locations.map((location: SensorLocationContents) => {\n const depth = location?.meta?.max_depth\n ? location.meta.type === 'depth'\n ? location.meta.min_depth + ' - ' + location.meta.max_depth\n : location.meta.max_depth - (location.meta.max_depth - location.meta.min_depth) / 2\n : 0;\n const description = location.meta?.type\n ? location.meta.type === 'depth'\n ? depth + ' meters, Cage '\n : depth + ' meters, ' + _.upperFirst(location.meta.type).replace('_', ' ')\n : 'Unknown';\n return {\n key: location.node_key,\n value: location.node_key,\n text: description,\n // type: location.meta.type,\n meta: location.meta,\n };\n });\n }\n var segments: LocationOption[] = [];\n if (locationOptions.length > 0) {\n const location = locationOptions.find((option: LocationOption) => option.key === selectedLocation);\n segments = locationOptions.filter(\n (o: LocationOption) =>\n o.meta?.min_depth === location?.meta?.min_depth &&\n o.meta.type === location.meta.type &&\n o.meta.max_depth === location.meta.max_depth\n );\n }\n\n const assign = async () => {\n if (!sli) {\n return;\n }\n let sensorkey = sli.sensor?.node_key;\n const locationKey = activeSegment ? activeSegment : selectedLocation;\n if (!sensorkey) {\n const response: any = await AuthFetcher(`/api/v1/sensor/site/${siteKey}`, authStore.getTokenFunction(), {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: {\n sensor_id: sli.sensor_id,\n sensor_type: sli.last_message?.sensor_type,\n },\n raw: true,\n });\n const sensor = await response.json();\n if (sensor?.node_key) {\n notyf.success('Sensor added to site');\n sensorkey = sensor.node_key;\n } else notyf.error('Could not add sensor to site');\n }\n if (!sensorkey) {\n notyf.error('Sensor has no node_key. ');\n return;\n }\n AuthFetcher(\n `/api/v1/sensor/site/${siteKey}/connect/sensor/${sensorkey}/sensorlocation/${locationKey}`,\n authStore.getTokenFunction(),\n {\n method: 'PUT',\n }\n )\n ?.then((res) => {\n res.error\n ? notyf.error('Could not pair sensor. Error code: ' + res.status + ' ' + res.statusText)\n : notyf.success('Successfully connected sensor');\n setSelectedLocation(false);\n setDisplay(false);\n mutate(`/api/v1/site/${siteKey}`);\n mutate(`/api/v1/sensor/site/${siteKey}`);\n })\n .catch((err) => {\n notyf.error('Could not pair sensor.');\n });\n };\n\n return (\n \n {makeTitleForConnectingSensor(cageName, sli)}\n \n \n \n location.meta?.left_border === 0)}\n onChange={(e, { value }) => {\n setActiveSegment(undefined);\n setSelectedLocation(value);\n }}\n value={selectedLocation}\n />\n \n \n \n \n \n \n \n {\n setActiveSegment(undefined);\n setDisplay(false);\n }}\n negative\n >\n Cancel\n \n {\n if (selectedLocation) assign();\n else notyf.error('No placement selected.');\n }}\n positive\n >\n Connect\n \n \n \n );\n }\n);\n\nexport default ConnectSensorDialogue;\n","import { capitalize } from 'lodash';\nimport { observer } from 'mobx-react';\nimport { useContext, useState } from 'react';\nimport { Button, Dropdown, Grid, Input, Label, Modal } from 'semantic-ui-react';\nimport { mutate } from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { SensorContents, SensorListItem, SENSOR_NODE_TYPE } from '../../lib/types';\nimport useStore from '../../Store/Store';\nimport NotyfContext from '../NotyfContext';\n\ninterface AddNewSensorDialogueProps {\n siteKey: string | undefined;\n displayAddSensor: boolean;\n sensors: SensorListItem[];\n setDisplayAddSensor: (b: boolean) => void;\n}\n\nconst sensorTypeOption = [\n { key: 'tilt', text: 'Tilt/Depth', value: 'tilt' },\n { key: 'oxygen', text: 'Oxygen', value: 'oxygen' },\n { key: 'salinity', text: 'Salinity', value: 'salinity' },\n { key: 'turbidity', text: 'Turbidity', value: 'turbidity' },\n];\n\nconst makeName = (serialNumber: number, sensorType: string) => {\n return capitalize(sensorType) + '-' + serialNumber;\n};\n\nconst validSensorId = (sensorId: number | undefined) => {\n return sensorId && sensorId <= 99999 && sensorId >= 0;\n};\nconst validSensor = (sensorType: string, sensorId: number, sensors: SensorListItem[]) => {\n if (!validSensorId(sensorId)) {\n return false;\n }\n let sensorExists = sensors.find((value: SensorListItem) => {\n return value.sensor?.sensor_type === sensorType && value.sensor?.sensor_id === sensorId % 1000;\n });\n return sensorExists === undefined;\n};\nconst AddNewSensorDialogue = observer(\n ({ siteKey, sensors, displayAddSensor, setDisplayAddSensor }: AddNewSensorDialogueProps) => {\n const notyf = useContext(NotyfContext);\n const { authStore } = useStore();\n const [name, setName] = useState('');\n const [sensorId, setSensorId] = useState(0);\n const [sensorType, setSensorType] = useState('');\n\n const addNewSensor = async () => {\n if (!validSensorId(sensorId)) {\n notyf.error('invalid sensor id ' + sensorId);\n return;\n }\n if (!sensorTypeOption.map((options: any) => options.value).includes(sensorType)) {\n notyf.error('invalid sensor type ' + sensorType);\n return;\n }\n let newName = name;\n if (newName === '') {\n newName = makeName(sensorId, sensorType);\n }\n\n const newSensor: SensorContents = {\n node_key: '',\n node_kind: SENSOR_NODE_TYPE,\n sensor_id: sensorId % 1000,\n sensor_type: sensorType,\n name: newName,\n };\n\n const response = await AuthFetcher(`/api/v1/sensor/site/${siteKey}`, authStore.getTokenFunction(), {\n method: 'PUT',\n raw: true,\n body: newSensor,\n });\n\n if (response.ok) {\n notyf.success('Added new sensor');\n siteKey && mutate(`/api/v1/site/${siteKey}`);\n siteKey && mutate(`/api/v1/sensor/site/${siteKey}`);\n setDisplayAddSensor(false);\n setName('');\n setSensorId(0);\n setSensorType('');\n } else {\n notyf.error('Failed adding sensor. Please try again');\n }\n };\n\n return (\n \n Add Sensor Manually\n \n \n \n \n \n \n \n {\n setName(data.value);\n }}\n value={name}\n >\n \n \n \n \n \n \n \n {\n if (+data.value <= 99999) setSensorId(+data.value);\n }}\n value={sensorId}\n >\n \n \n \n \n \n \n \n \n \n \n {\n if (context.value) {\n setSensorType(context.value ? context.value.toString() : '');\n }\n }}\n placeholder={'select sensor type'}\n options={sensorTypeOption}\n >\n \n \n \n \n \n \n {\n setDisplayAddSensor(false);\n setSensorType('');\n setName('');\n setSensorId(0);\n }}\n >\n Cancel\n \n \n \n );\n }\n);\n\nexport default AddNewSensorDialogue;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { useContext } from 'react';\nimport { Modal, Button } from 'semantic-ui-react';\nimport { mutate } from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { getSensorDepth, getSensorSegment } from '../../lib/format';\nimport { SensorListItem } from '../../lib/types';\nimport useStore from '../../Store/Store';\nimport NotyfContext from '../NotyfContext';\n\ninterface DisconnectSensorDialogueProps {\n siteKey: string | undefined;\n display: boolean;\n setDisplay: (b: boolean) => void;\n sli: SensorListItem | undefined;\n}\n\nconst makeContentForDisconnectingSensor = (sli: SensorListItem | undefined) => {\n if (!sli) {\n return '';\n }\n\n let sensorName: string = sli.sensor ? sli.sensor.name : '' + String(sli.sensor_id).padStart(3, '0');\n let sensorType: string = sli.sensor ? sli.sensor.sensor_type : sli.last_message ? sli.last_message.sensor_type : '';\n let placement: string = sli.sensor_location\n ? getSensorDepth(sli.sensor_location.meta) + ' ' + getSensorSegment(sli.sensor_location.meta)?.label\n : '';\n return (\n 'Are you sure you want to disconnect ' +\n _.capitalize(sensorType) +\n ' Sensor ' +\n (sensorName ? '(' + sensorName + ')' : '') +\n 'from ' +\n placement\n );\n};\n\nconst DisconnectSensorDialogue = observer(({ siteKey, sli, display, setDisplay }: DisconnectSensorDialogueProps) => {\n const notyf = useContext(NotyfContext);\n const { authStore } = useStore();\n const unassign = () => {\n AuthFetcher(\n `/api/v1/sensor/site/${siteKey}/connect/sensor/${sli?.sensor?.node_key}/sensorlocation/${sli?.sensor_location?.node_key}`\n ,\n authStore.getTokenFunction(),\n\n { method: 'DELETE' }\n )\n ?.then((res) => {\n mutate(`/api/v1/site/${siteKey}`);\n mutate(`/api/v1/sensor/site/${siteKey}`);\n res.error ? notyf.error('Could not disconnect sensor') : notyf.success('Successfully disconnected sensor');\n setDisplay(false);\n })\n .catch((err) => {\n notyf.error('Could not unpair sensor.');\n setDisplay(false);\n });\n };\n return (\n \n Are you sure?\n {makeContentForDisconnectingSensor(sli)}\n \n \n \n \n \n );\n});\n\nexport default DisconnectSensorDialogue;\n","import { observer } from 'mobx-react';\nimport { useContext, useState } from 'react';\nimport { Modal, Form, Input, Button } from 'semantic-ui-react';\nimport { mutate } from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { SensorContents } from '../../lib/types';\nimport useStore from '../../Store/Store';\nimport NotyfContext from '../NotyfContext';\n\ninterface EditSensorDialogueProps {\n display: boolean;\n setDisplay: (b: boolean) => void;\n siteKey: string | undefined;\n sensor?: SensorContents;\n}\n\nconst EditSensorDialogue = observer(({ siteKey, sensor, display, setDisplay }: EditSensorDialogueProps) => {\n const notyf = useContext(NotyfContext);\n const { authStore } = useStore();\n const [name, setName] = useState();\n const changeName = () => {\n if (!sensor) {\n return;\n }\n const { sensor_type, sensor_id } = sensor;\n let url = '/api/v1/sensor/' + sensor_type + '/' + sensor_id + '/meta/setName';\n AuthFetcher(url, authStore.getTokenFunction(), { method: 'PUT', body: name, raw: true })\n ?.then((res) => {\n res.ok ? notyf.success('Successfully changed sensor name') : notyf.error('Could not change sensor name.');\n setDisplay(false);\n mutate(`/api/v1/site/${siteKey}`);\n mutate(`/api/v1/sensor/site/${siteKey}`);\n })\n .catch((err) => {\n notyf.error('Could not change sensor name');\n console.log(err);\n });\n };\n\n return (\n \n Edit sensor name/description\n \n
\n {\n setName(e.target.value);\n }}\n />\n \n
\n \n \n \n \n
\n );\n});\n\nexport default EditSensorDialogue;\n","import moment from 'moment';\nimport React, { Fragment, useState } from 'react';\nimport {\n Dropdown,\n Icon,\n Popup,\n Table,\n TableBody,\n TableCell,\n TableRow,\n Loader,\n Segment,\n Dimmer,\n Header,\n} from 'semantic-ui-react';\nimport useSWR from 'swr';\nimport { AuthFetcher } from '../../lib/fetch';\nimport { getSensorName, getSensorDepth, getSensorSegment } from '../../lib/format';\nimport { CageContents, SensorListItem, SensorLocationContents } from '../../lib/types';\nimport ConnectSensorDialogue from './ConnectSensorDialogue';\nimport SensorIcon from '../UIElements/SensorIcon';\nimport AddNewSensorDialogue from './AddNewSensorDialogue';\nimport DisconnectSensorDialogue from './DisconnectSensorDialogue';\nimport EditSensorDialogue from './EditSensorDialogue';\nimport useStore from '../../Store/Store';\nimport { observer } from 'mobx-react';\n\ninterface SensorListProps {\n cageKey: string | undefined;\n cageName: string;\n}\n\nconst SensorList = observer(({ cageKey, cageName }: SensorListProps) => {\n const { siteStore, authStore } = useStore();\n const siteKey = siteStore.getSiteKey();\n const [column] = useState();\n const [direction] = useState('ascending');\n const [showConnectSensor, setShowConnectSensor] = useState(false);\n const [showEditSensor, setShowEditSensor] = useState(false);\n const [showDisconnectSensor, setShowDisconnectSensor] = useState(false);\n const [pickedSensor, setPickedSensor] = useState();\n const [displayUnassigned, setDisplayUnassigned] = useState(false);\n const [displayAddSensor, setDisplayAddSensor] = useState(false);\n const { data: site, error } = useSWR(siteKey ? `/api/v1/site/${siteKey}` : '', (url: string) =>\n AuthFetcher(url, authStore.getTokenFunction())\n );\n\n const { data: allSensors } = useSWR(siteKey ? `/api/v1/sensor/site/${siteKey}` : '', (url: string) =>\n AuthFetcher(url, authStore.getTokenFunction())\n );\n\n if (!allSensors) {\n return ;\n }\n\n const typedAllSensors: SensorListItem[] = allSensors;\n\n const cage: CageContents | undefined = site && site.cages.find((cage: CageContents) => cage.node_key === cageKey);\n const cageSlKeys: string[] = cage ? cage.sensor_locations.map((sl: SensorLocationContents) => sl.node_key) : [];\n\n const cageSensors: SensorListItem[] = typedAllSensors\n .filter((sli: SensorListItem) => sli.sensor_location)\n .filter((sli: SensorListItem) => sli.sensor_location && cageSlKeys.includes(sli.sensor_location.node_key));\n\n return (\n \n \n \n \n dispatch({ type: 'CHANGE_SORT', column: 'name' })}\n >\n Sensor\n \n dispatch({ type: 'CHANGE_SORT', column: 'age' })}\n >\n Placement\n \n dispatch({ type: 'CHANGE_SORT', column: 'gender' })}\n colSpan=\"2\"\n textAlign=\"center\"\n >\n Status\n \n \n \n \n\n {cageSensors.length > 0 && (\n \n {cageSensors\n .filter((sli: SensorListItem) => sli.sensor_location)\n .sort((a: SensorListItem, b: SensorListItem) => {\n if (a.sensor_location && b.sensor_location) {\n if (a.sensor_location.meta.min_depth === b.sensor_location.meta.min_depth) {\n return a.sensor_location.meta.left_border > b.sensor_location.meta.left_border ? 1 : -1;\n }\n return a.sensor_location.meta.min_depth > b.sensor_location.meta.min_depth ? 1 : -1;\n }\n //Beacuase of the filter this should not happen. Complier does not agree\n return -1;\n })\n .map((sli: SensorListItem, index) => {\n return (\n \n \n {sli.sensor && }\n\n {sli.sensor && sli.sensor.name ? (\n \n {getSensorName(sli.sensor.sensor_type, sli.sensor.sensor_id, sli.sensor.name, 15)}\n \n }\n />\n ) : (\n sli.sensor && (\n \n {getSensorName(sli.sensor.sensor_type, sli.sensor_id, sli.sensor.name)}\n \n )\n )}\n \n {sli.sensor_location && (\n \n {getSensorDepth(sli.sensor_location.meta)}{' '}\n {getSensorSegment(sli.sensor_location.meta)?.label\n ? ', ' + getSensorSegment(sli.sensor_location.meta).label\n : ''}\n \n )}\n \n \n \n \n {\n setShowDisconnectSensor(true);\n setPickedSensor(sli);\n }}\n >\n \n Disconnect placement\n \n {\n setShowEditSensor(true);\n setPickedSensor(sli);\n }}\n >\n \n Edit description\n \n \n \n \n \n );\n })}\n \n )}\n\n {typedAllSensors && typedAllSensors.flat().length > 0 && (\n \n \n {\n setDisplayUnassigned((status) => !status);\n }}\n >\n \n Unassigned Sensors (\n {typedAllSensors.flat().filter((sli: SensorListItem) => !sli.sensor_location).length})\n \n \n \n )}\n\n \n {displayUnassigned &&\n typedAllSensors &&\n typedAllSensors\n .flat()\n\n .filter((sli: SensorListItem) => !sli.sensor_location)\n .sort((a: SensorListItem, b: SensorListItem) =>\n a.sensor && b.sensor ? (a.sensor.sensor_type > b.sensor.sensor_type ? 1 : -1) : -1\n )\n .map((sli: SensorListItem, index: number) => {\n const sensorType = sli.last_message\n ? sli.last_message.sensor_type\n : sli.sensor\n ? sli.sensor.sensor_type\n : '';\n const sensorId = sli.last_message ? sli.last_message.sensor_id : sli.sensor ? sli.sensor.sensor_id : -1;\n return (\n \n \n \n \n {getSensorName(sensorType, sensorId, sli.sensor?.name)}\n \n \n \n \n \n {\n setPickedSensor(sli);\n setShowConnectSensor(true);\n }}\n />\n \n \n );\n })}\n \n \n \n {\n setDisplayAddSensor((status) => !status);\n }}\n >\n \n Add Sensor\n \n \n \n
\n \n \n \n \n \n
Unable to load sensors
\n
\n
\n );\n});\n\ninterface SensorStatusProps {\n sli: SensorListItem;\n}\nconst SensorStatus = ({ sli }: SensorStatusProps) => {\n const battery = sli.last_message?.battery ? sli.last_message.battery : 0;\n const timeSince = moment(sli.last_message?.ts)\n .fromNow(true)\n .replace('minute', 'min')\n .replace(/seconds/, 'sec')\n .replace(/second/, 'sec');\n\n const hoursSinceLastMessage = moment.duration(moment().diff(moment(sli.last_message?.ts))).asHours();\n\n return (\n <>\n \n 20 ? 'green' : battery > 5 ? 'yellow' : 'red'}\n name={\n battery > 75\n ? 'battery four'\n : battery > 50\n ? 'battery three'\n : battery > 25\n ? 'battery two'\n : battery > 5\n ? 'battery one'\n : 'battery zero'\n }\n />{' '}\n {battery ? battery + '%' : ''}\n \n \n \n \n \n Sensor id\n {sli.sensor_id}\n \n {sli.sensor?.name && (\n \n Description\n {sli.sensor?.name}\n \n )}\n \n {sli.last_message && (\n <>\n Bit rate error\n {sli.last_message ? sli.last_message.bit_error_rate.toFixed(2) : ''}\n \n )}\n \n \n Time\n \n {sli.last_message ? moment(sli.last_message?.ts).format('H:mm D. MMM') : 'No messages'}\n \n \n \n \n ) : (\n No message received for sensor {sli.sensor_id}\n )\n }\n trigger={\n 0 && hoursSinceLastMessage < 24 ? 'white' : 'grey' }}>\n 0 && hoursSinceLastMessage < 24 ? 'green' : 'grey'}\n />\n {hoursSinceLastMessage > 0 ? timeSince : ''}\n \n }\n />\n \n \n );\n};\n\nexport default SensorList;\n","import { useState } from 'react';\nimport { Container, Grid, Header, Button, Tab } from 'semantic-ui-react';\nimport { CageContents, SiteContents } from '../../lib/types';\nimport AlarmList from '../AlarmList/AlarmList';\nimport CageGraphGridNew from '../CageOverview/CageGraphGridNew';\nimport CageOverviewAlarms from '../CageOverview/CageOverviewAlarms';\nimport SensorList from '../SensorList/SensorList';\n\nconst getCageName = (cageKey: string, site: SiteContents | undefined) => {\n if (!site) {\n return '';\n }\n const cage = site.cages.find((cage) => cage.node_key === cageKey);\n if (cage) {\n return cage.name.length > 2 ? cage.name : cage.node_kind + ' ' + cage.name;\n } else {\n return '';\n }\n};\n\ninterface RightMenuDashboardProps {\n cageKey: string;\n site: SiteContents | undefined;\n setRightMenuVisible: (b: boolean) => void;\n}\n\nconst RightMenuDashboard = ({ cageKey, site, setRightMenuVisible }: RightMenuDashboardProps) => {\n const cage: CageContents | undefined = site?.cages.find((c: CageContents) => c.node_key === cageKey);\n const [activeIndex, setActiveIndex] = useState();\n return (\n \n \n \n
\n {getCageName(cageKey, site)}\n
\n
\n \n {\n setRightMenuVisible(false);\n }}\n />\n \n
\n\n setActiveIndex(activeIndex)}\n />\n
\n );\n};\n\ninterface PanesProps {\n cage: CageContents | undefined;\n setRightMenuVisible: any;\n}\n\nconst panes = ({ cage, setRightMenuVisible }: PanesProps) => {\n if (cage === undefined) {\n return [];\n } else {\n return [\n {\n menuItem: 'Trends',\n render: () => (\n \n {cage && }\n \n ),\n },\n {\n menuItem: 'Graphs',\n render: () => {\n return (\n \n {cage && (\n \n )}\n \n );\n },\n },\n {\n menuItem: 'Sensors',\n render: () => (\n \n {cage && }\n \n ),\n },\n {\n menuItem: 'Alarms',\n render: () => {cage && },\n },\n ];\n }\n};\n\nexport default RightMenuDashboard;\n","import { useState, Fragment, useEffect } from 'react';\nimport { Container, Dimmer, Header, Icon, Loader } from 'semantic-ui-react';\nimport useSWR from 'swr';\n\nimport '../Components/3D/Materials/Cage2DepthSegmentsMaterial';\n\nimport { AuthFetcher, SiteHandler, SlAlarmStatusesHandler } from '../lib/fetch';\nimport { CageContents, SensorLocationContents, ScenarioStatus, SlScenarioStatus, StatusInfo } from '../lib/types';\nimport SiteView from './SiteView';\nimport RightMenu from '../Components/UIElements/RightMenu';\nimport useStore from '../Store/Store';\nimport { observer } from 'mobx-react';\nimport RightMenuDashboard from '../Components/Dashboard/RightMenuDashboard';\n\ninterface DashboardProps {\n match?: any;\n setBreadCrumb: (text: string) => void;\n}\n\nconst Dashboard = observer(({ match, setBreadCrumb }: DashboardProps) => {\n const { siteStore, authStore, appStore } = useStore();\n appStore.setBreadcrumb('Dashboard');\n\n const [cageKey, setCageKey] = useState();\n const [rightMenuVisible, setRightMenuVisible] = useState(false);\n const [rightMenuContent, setRightMenuContent] = useState();\n\n if (match?.params?.siteId && siteStore.getSiteKey() !== match.params.siteStore.getSiteKey()) {\n siteStore.setSiteKey(match.params.siteStore.getSiteKey());\n }\n useEffect(() => {\n setRightMenuVisible(false);\n }, [setRightMenuVisible]);\n\n const { data: site, error: siteError } = useSWR(\n siteStore.getSiteKey() ? '/api/v1/site/' + siteStore.getSiteKey() : null,\n (url) => SiteHandler(AuthFetcher(url, authStore.getTokenFunction())),\n {}\n );\n const { data: siteAlarmStatuses, error: alarmError } = useSWR(\n siteStore.getSiteKey() ? 'api/v1/alarm/site/' + siteStore.getSiteKey() : null,\n (url) => SlAlarmStatusesHandler(AuthFetcher(url, authStore.getTokenFunction())),\n { refreshInterval: 1000 }\n );\n\n if (alarmError) {\n console.error(alarmError);\n }\n useEffect(() => {\n cageKey &&\n setRightMenuContent(\n \n );\n }, [cageKey, setRightMenuVisible, setRightMenuContent, siteStore, site]);\n\n useEffect(() => {\n setRightMenuVisible && setRightMenuVisible(false);\n }, [setRightMenuVisible]);\n\n useEffect(() => {\n setBreadCrumb && setBreadCrumb('Dashboard');\n }, [setBreadCrumb]);\n\n if (!site) {\n return ;\n }\n\n if (!siteAlarmStatuses) {\n console.log('unable to load site alarms');\n }\n\n if (site?.cages?.length) site.cages.sort((a: CageContents, b: CageContents) => (a.node_key > b.node_key ? 1 : -1));\n\n if (site && site.cages) {\n site.cages\n .flatMap((cage: CageContents) => cage.sensor_locations)\n .forEach((sl: SensorLocationContents) => {\n if (siteAlarmStatuses) {\n let relatedAlarms = siteAlarmStatuses.find((slStatus: SlScenarioStatus) => slStatus.sl_key === sl.node_key);\n if (relatedAlarms) {\n sl.scenario_status = relatedAlarms.alarm_status;\n if (sl.scenario_status.length > 0) {\n sl.status = sl.scenario_status\n .map((ss: ScenarioStatus) => ss.severity)\n .reduce((prevValue: StatusInfo, currentValue: StatusInfo) => {\n return prevValue.level > currentValue.level ? prevValue : currentValue;\n });\n }\n }\n }\n });\n }\n\n return (\n \n \n {\n setCageKey(key);\n setRightMenuVisible(true);\n }}\n setMenuRightVisible={setRightMenuVisible}\n setPicked={setCageKey}\n showAlarms={!rightMenuVisible}\n />\n \n {siteError && (\n
\n \n Unable to load Site data\n
\n )}\n \n
\n );\n});\n\nexport default Dashboard;\n","import { createMedia } from '@artsy/fresnel';\nimport { range } from 'd3-array';\nimport { min, max, extent } from 'd3-array';\nimport { axisLeft, axisBottom, axisTop, Axis } from 'd3-axis';\nimport { NumberValue, scaleLinear } from 'd3-scale';\nimport { select } from 'd3-selection';\nimport { observer } from 'mobx-react';\nimport React, { useRef, useEffect, useState, Dispatch, SetStateAction, FC, Fragment } from 'react';\nimport {\n Popup,\n Icon,\n Input,\n Radio,\n Form,\n Divider,\n CheckboxProps,\n InputOnChangeData,\n Button,\n ButtonGroup,\n} from 'semantic-ui-react';\nimport { AuthFetcher } from '../../lib/fetch';\nimport useStore from '../../Store/Store';\nimport './CorrelatorGraph.css';\n\nconst receiver_colors = ['#0000ff', '#00ff00', '#ff0000', '#000000'];\nconst legendKeys = ['r1', 'r2', 'r3', 'r4'];\n\ninterface axisConstructorProps {\n axisCreator: Axis;\n}\n\nconst AxisConstructor = ({ axisCreator }: axisConstructorProps) => {\n // https://stackoverflow.com/a/56029853\n const axisRef = (axis: any) => {\n axis && axisCreator(select(axis));\n };\n return ;\n};\n\ninterface graphConstructorProps {\n graphCreator: Axis;\n tickSize: number;\n}\n\nconst GraphGridConstructor = ({ graphCreator, tickSize }: graphConstructorProps) => {\n graphCreator.tickSize(tickSize).tickFormat();\n\n // https://stackoverflow.com/a/56029853\n const axisRef = (axis: any) => {\n axis && graphCreator(select(axis));\n };\n return ;\n};\n\ntype GridLayoutPopupProps = {\n graphDisplay: string;\n setGraphAxisType: Dispatch>;\n customYMn: number;\n customYMx: number;\n setCustomYMin: Dispatch>;\n setCustomYMax: Dispatch>;\n};\n\nconst GridLayoutPopup: FC = ({\n graphDisplay,\n setGraphAxisType,\n customYMn,\n customYMx,\n setCustomYMin,\n setCustomYMax,\n}) => {\n const onRadioEvent = (e: React.FormEvent, data: CheckboxProps) => {\n let dataString: string = data.value as string;\n setGraphAxisType(dataString);\n };\n\n const onYMnValueChange = (e: React.FormEvent, data: InputOnChangeData) => {\n console.log('setCustomYMin', data.value);\n setCustomYMin(parseInt(data.value));\n };\n\n const onYMxValueChange = (e: React.FormEvent, data: InputOnChangeData) => {\n setCustomYMax(parseInt(data.value));\n };\n\n const GridLayoutOptions = () => {\n return (\n
\n Axis options\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n };\n\n return (\n }\n position=\"top right\"\n />\n );\n};\n\ntype LegendsProps = {\n legendsTransform: string;\n mod: number;\n};\n\nconst Legends: FC = ({ legendsTransform, mod }) => {\n if (mod === 0) return <>;\n\n // All base values for outerWidth = 1500, outerHeight = 600\n let legendTitleFont = 16 * mod;\n let legendTextFont = 12 * mod;\n let ltx = 32 * mod;\n let lty = -10 * mod;\n let circleR = 6 * mod;\n let circleX = 40 * mod;\n let circleY = 10 * mod;\n let textX = 60 * mod;\n let textY = 15 * mod;\n let yDelta = 25 * mod;\n\n return (\n \n \n Receivers\n \n \n \n {legendKeys[0]}\n \n \n \n {legendKeys[1]}\n \n \n \n {legendKeys[2]}\n \n \n \n {legendKeys[3]}\n \n \n );\n};\n\ntype GraphInnerProps = {\n graph: GraphData[][];\n width: number;\n height: number;\n mod: number; // Primarily for the legends tab, it scales down elements based on screen size\n graphDisplay: string;\n customYAxisMax?: number;\n customYAxisMin?: number;\n};\n\nconst GraphInner: FC = ({\n graph,\n width,\n height,\n mod,\n graphDisplay,\n customYAxisMax,\n customYAxisMin,\n}) => {\n const margin = { top: 20, right: 15, bottom: 30, left: 30 };\n const outerWidth = width;\n const outerHeight = height;\n const gWidth = outerWidth - margin.left - margin.right;\n const gHeight = outerHeight - margin.top - margin.bottom;\n\n const legendsMarginTop = margin.top * 6 * mod;\n const legendsMarginRight = margin.right * 16 * mod;\n\n const canvasRef = useRef(null);\n const yMin = useRef(new Array(10));\n const yMax = useRef(new Array(10));\n\n const x_min = graph[0][0].px;\n const x_max = graph[0][graph[0].length - 1].px;\n\n let _yMx = customYAxisMax || 100;\n let _yMn = customYAxisMin || 0;\n\n if (graphDisplay === 'auto') {\n const y_extents = graph.map((item) => {\n return extent(item, (d) => d.py);\n });\n const y_min = min(y_extents, (d) => d[0]);\n const y_max = max(y_extents, (d) => d[1]);\n\n yMax.current.shift();\n yMax.current.push(y_max);\n yMin.current.shift();\n yMin.current.push(y_min);\n\n _yMx = max(yMax.current);\n _yMn = min(yMin.current);\n\n // Gives the automatic graph some padding\n _yMx += 10;\n _yMn -= 10;\n }\n\n const xScale = scaleLinear().domain([x_min, x_max]).range([0, gWidth]).nice();\n\n const yScale = scaleLinear().domain([_yMn, _yMx]).range([gHeight, 0]).nice();\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (canvas == null) return; // TODO: have a look at these later\n const context = canvas.getContext('2d');\n if (context == null) return;\n\n var nWidth = context.canvas.clientWidth;\n var nHeight = context.canvas.clientHeight;\n\n context.canvas.width = nWidth;\n context.canvas.height = nHeight;\n\n const drawPoint = (ctx: CanvasRenderingContext2D, x: number, y: number) => {\n const px = xScale(x);\n const py = yScale(y);\n ctx.lineTo(px, py);\n };\n\n const draw = (ctx: CanvasRenderingContext2D) => {\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n\n if (!graph) {\n return;\n }\n\n graph.forEach((r, idx) => {\n ctx.beginPath();\n // ctx.moveTo(xScale(0),yScale(0))\n ctx.strokeStyle = receiver_colors[idx];\n ctx.lineWidth = 1;\n r.forEach((d) => {\n drawPoint(ctx, d.px, d.py);\n });\n ctx.stroke();\n });\n };\n\n draw(context);\n }, [graph, xScale, yScale]);\n\n const xAxis = axisBottom(xScale);\n const yAxis = axisLeft(yScale);\n const xAxisTop = axisTop(xScale);\n const xTransform = `translate(${margin.left}, ${outerHeight - margin.bottom})`;\n const yTransform = `translate(${margin.left}, ${margin.top})`;\n const legendsTransform = `translate(${outerWidth - legendsMarginRight}, ${legendsMarginTop})`;\n\n const xGrid = axisBottom(xScale); // Have to do this, otherwise the CSS for the xAxis and yAxis overwrites the grid CSS\n const yGrid = axisLeft(yScale);\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};\n\nexport function BucketSampler() {\n // https://github.com/d3fc/d3fc-sample/blob/master/src/bucket.js\n var bucketSize = 10;\n\n var bucket: any = (data: any) =>\n bucketSize <= 1\n ? data.map((d: any) => [d])\n : range(0, Math.ceil(data.length / bucketSize)).map((i) => data.slice(i * bucketSize, (i + 1) * bucketSize));\n\n bucket.bucketSize = function (x: number) {\n if (!arguments.length) {\n return bucketSize;\n }\n\n bucketSize = x;\n return bucket;\n };\n return bucket;\n}\n\nfunction killInf(val: number) {\n // Remove negative infinity from the graph\n if (val < -1e9) {\n return NaN;\n }\n return val;\n}\n\nfunction downsample(\n payload: number[][],\n x_scale: number,\n y_scale: number,\n x_offset: number,\n y_offset: number,\n url: any\n) {\n // Downsample to 1 entry pr pixel in chart (if needed)\n //var dataPrPixel = payload.length / this.width // Downsample to number of pixels available (responsive)\n let dataPrPixel = payload.length / 500; // Downsample to fixed number of entries\n\n let s0: number[] = payload.map(function (d) {\n return d[0];\n });\n let s1: number[] = payload.map(function (d) {\n return d[1];\n });\n let s2: number[] = payload.map(function (d) {\n return d[2];\n });\n let s3: number[] = payload.map(function (d) {\n return d[3];\n });\n\n if (dataPrPixel > 1) {\n // Downsample with BucketSampler\n let bs = BucketSampler();\n let buckets = bs.bucketSize(dataPrPixel);\n\n payload = buckets(payload).map(function (d: any) {\n return Math.max(...d);\n });\n } else {\n // Use data without downsampling\n dataPrPixel = 1;\n }\n\n let geometry: any = [[], [], [], []];\n for (let index = 0; index < payload.length; index++) {\n const px = index * dataPrPixel * x_scale + x_offset;\n y_scale = 1;\n geometry[0][index] = { px: px, py: y_offset + y_scale * killInf(s0[index]) };\n geometry[1][index] = { px: px, py: y_offset + y_scale * killInf(s1[index]) };\n geometry[2][index] = { px: px, py: y_offset + y_scale * killInf(s2[index]) };\n geometry[3][index] = { px: px, py: y_offset + y_scale * killInf(s3[index]) };\n }\n return geometry;\n}\n\ntype CorrelatorGraphProps = {\n defYMax?: number;\n defYMin?: number;\n url: string;\n};\n\ninterface GraphData {\n px: number;\n py: number;\n}\n\nconst CorrelatorGraphManual = observer(({ url, defYMax, defYMin }: CorrelatorGraphProps) => {\n const { authStore } = useStore();\n const [lGraph, setLgraph] = useState([]);\n const [loading, setLoading] = useState(false);\n const [interval, setIntervalId] = useState();\n const [graphDisplay, setGraphDisplay] = useState('fixed');\n const [customYAxisMin, setYAxisMin] = useState(defYMin || -130);\n const [customYAxisMax, setYAxisMax] = useState(defYMax || -5);\n // const { data, error } = useSWR(url, (url) => AuthFetcher(url, authStore.getTokenFunction()), {\n // refreshInterval: 1000,\n // dedupingInterval: 10,\n // });\n\n const handleClick = async () => {\n setLoading(true);\n const response = await AuthFetcher(url, authStore.getTokenFunction(), { raw: true });\n if (response.ok) {\n console.log(response);\n const ddata = await response.json();\n console.log(ddata);\n setLgraph(\n downsample(\n ddata?.data || [[]],\n ddata?.x_scale || 1,\n ddata?.y_scale || 1,\n ddata?.x_offset || 0,\n ddata?.y_offset || 0,\n url\n )\n );\n } else {\n }\n setLoading(false);\n };\n\n // let ddata: DiagnosticData | undefined = data;\n // const lGraph: GraphData[][] = downsample(\n // ddata?.data || [[]],\n // ddata?.x_scale || 1,\n // ddata?.y_scale || 1,\n // ddata?.x_offset || 0,\n // ddata?.y_offset || 0,\n // url\n // );\n\n return (\n \n \n {\n if (!interval) {\n setIntervalId(setInterval(() => handleClick(), 10000));\n }\n handleClick();\n }}\n />\n\n {\n if (interval) {\n clearInterval(interval);\n setIntervalId(undefined);\n }\n }}\n />\n \n \n\n \n );\n});\n\n// Method detecting the width of the screen for graph scaling\nconst { MediaContextProvider, Media } = createMedia({\n breakpoints: {\n sm: 0,\n md: 600,\n lg: 1024,\n xl: 1920,\n },\n});\n\ninterface GraphProps {\n graph: GraphData[][];\n graphDisplay: string;\n customYAxisMax?: number;\n customYAxisMin?: number;\n}\n\nconst Graph: FC = ({ graph, graphDisplay, customYAxisMax, customYAxisMin }: GraphProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default CorrelatorGraphManual;\n","import React, { useState } from 'react';\nimport { Divider, Message, Segment, Icon, Header, Form, TextArea, Button, Popup, ButtonGroup } from 'semantic-ui-react';\n\nconst defaultCollectionTime: number = 15;\n\ninterface selectDurationProps {\n duration: number;\n onSelectDuration: React.Dispatch>;\n}\n\nexport default function DiagnosticReport() {\n const [description, setDescription] = useState('');\n const [duration, setDuration] = useState(defaultCollectionTime);\n\n const onChange = (e: any) => {\n setDescription(e.target.value);\n };\n\n return (\n \n Diagnostic report\n \n \n \n Generate report for analysis by Water Linked support\n
\n

Please make sure the sensor is in water and showing the behaviour you want assistance with.

\n
\n Clicking the button below initiates a \n \n  second data capture to share with the support team.\n
\n
\n
\n
\n\n
\n \n {duration !== defaultCollectionTime && }\n
Describe your setup and what you you are experiencing
\n \n